openssl로 만든 pfx 인증서를 Windows Server 2016 이하에서 등록 시 "The password you entered is incorrect" 오류 발생
예전에 설명했던,
openssl을 이용해 인트라넷 IIS 사이트의 SSL 인증서 생성
; https://www.sysnet.pe.kr/2/0/13236
방법에 따라 pfx를 생성 후,
openssl req -newkey rsa:2048 -nodes -keyout test_ca.key -x509 -days 3650 -out test_ca.crt
openssl genrsa -out win2008r2.key 2048
openssl req -key win2008r2.key -new -out win2008r2.csr -subj "/CN=win2008r2"
openssl x509 -req -days 3650 -in win2008r2.csr -CA win2008r2_ca.crt -CAkey win2008r2_ca.key -out win2008r2.crt -extfile win2008r2_ssl_conf.txt
openssl pkcs12 -export -out win2008r2.pfx -inkey win2008r2.key -in win2008r2.crt
그 파일을 Windows Server 2016 이하의 컴퓨터에서 등록하려고 했더니 다음과 같이,
Certificate Import Wizard
The password you entered is incorrect.
암호가 다르다는 메시지가 나옵니다. 검색해 보면,
"The password you entered is incorrect" when importing .pfx files to Windows certificate store
; https://stackoverflow.com/questions/69343254/the-password-you-entered-is-incorrect-when-importing-pfx-files-to-windows-cer
OpenSSL 3.0부터 pfx 생성 시 개인키를 암호화하는 알고리즘이
AES256을 기본값으로 하지만, 정작 Windows 구 버전에서는 이를 제공하지 않기 때문이라고 하는데요, 구체적으로 어떤 AES256을 의미하는지 모르겠지만
Windows Server 2008 R2에서도 지원하는 것으로 나오는데... 아마도 개인키 암호화에 대해 AES256을 사용해 해독하지 않는 것으로 이해하는 것이 맞을 것 같습니다.
암튼, 위와 같은 문제로 인해 Windows Server 2016 이하의 버전을 위해 pfx 파일을 만드는 것이라면 "-legacy" 옵션을 사용해야 합니다.
openssl pkcs12 -legacy -export -out win2008r2_legacy.pfx -inkey win2008r2.key -in win2008r2.crt
참고로, 윈도우 버전의 openssl은 "-legacy" 옵션에 해당하는 기능을 "legacy.dll"에서 지원하므로 그것을 찾을 수 있어야 합니다. 그렇지 않으면 이런 오류가 발생할 수 있습니다.
c:\temp> openssl pkcs12 -legacy -export -out win2008r2.pfx -inkey win2008r2.key -in win2008r2.crt
pkcs12: unable to load provider legacy
Hint: use -provider-path option or OPENSSL_MODULES environment variable.
2C540100:error:12800067:DSO support routines:win32_load:could not load the shared library:crypto\dso\dso_win32.c:108:filename(C:\git_clone\vcpkg\packages\openssl_x64-windows\bin\legacy.dll)
2C540100:error:12800067:DSO support routines:DSO_load:could not load the shared library:crypto\dso\dso_lib.c:152:
2C540100:error:07880025:common libcrypto routines:provider_init:reason(524325):crypto\provider_core.c:912:name=legacy
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]