PKI 인프라를 사용하여 서버 간 OpenVPN을 설정하고 있는데 작동하지 않습니다. 인증서 체인에 문제가 있다고 생각하지만 방법을 설명하지 못했습니다. 오프라인 루트 CA와 인증서 계층이 있습니다. CA는 EJBCA라는 제품에 의해 외부 적으로 관리됩니다. 그림으로 체인은 다음과 같습니다 (이름이 변경됨).
RootCA -> OnlineSubCA -> SubCA1 -> VPNCA
CA VPNCA로 서버 및 클라이언트 인증서에 서명하고 해당 시스템에 인증서 체인이 있습니다. OpenVPN을 디버깅하는 동안 “openssl s_server”및 s_client “를 사용하여 CA 체인이라고 믿었습니다. 특히 서버에서 :
openssl s_server -cert server.cert -key server.key -CAfile chained.pem -verify 5
그리고 클라이언트에서
openssl s_client -cert client.cert -key client.key -CAfile chained.pem -verify 5
서버는 다른 것들 중에서도 뱉어냅니다.
depth=3 C = CA, O = My Company, CN = OnlineSubCA
verify error:num=24:invalid CA certificate
verify return:1
depth=3 C = CA, O = My Company, CN = OnlineSubCA
verify error:num=26:unsupported certificate purpose
verify return:1
depth=4 C = CA, O = My Company, CN = RootCA, emailAddress = certs@mycompany.com
verify return:1
depth=3 C = CA, O = My Company, CN = OnlineSubCA
verify return:1
depth=2 CN = SubCA1, O = My Company, C = CA
verify return:1
depth=1 CN = VPNCA
verify return:1
depth=0 C = CA, ST = , L = , O = My Company, OU = , CN = client1.mycompany.com, emailAddress = pki@mycompany.com
verify return:1
그리고 이것이 어떻게 또는 왜 그런지를 설명하기 위해 완전히 손실되었습니다. OpenVPN도 클라이언트에서 비슷한 오류로 실패합니다.
VERIFY ERROR: depth=3, error=invalid CA certificate: /C=CA/O=My_Company/CN=OnlineSubCA
Ubuntu 12.04에서 OpenVPN 2.2.1 및 OpenSSL 1.0.1을 실행하고 있습니다. 둘 다 시간이 동기화되었습니다.
더 이상 진행하는 방법이 없어졌습니다. 모든 아이디어 / 제안은 크게 감사하겠습니다.
답변
이것은 X509v3 확장에 문제가 있습니다. 최신 인증서는 해당 유형의 인증서에 대해 승인 된 용도를 나타내는 방식으로 서명됩니다. 인증서를로 파이핑 openssl x509 -text
하거나으로 파일 경로를 지정하여 표시 할 수 있습니다 -in
.
귀하의 경우, 이러한 오류 메시지는 지정하는 인증서가 CA 인증서가 아님을 나타냅니다. (가장 큰 힌트는 “지원되지 않는 인증서 목적”입니다.) 위 명령을 사용하여 인증서의 텍스트 정보를 표시하십시오. 유효한 CA 인증서는 다음과 같습니다.
X509v3 Basic Constraints:
CA:TRUE
CA가 아닌 인증서는 이것을 대신 표시합니다.
X509v3 Basic Constraints:
CA:FALSE
파일이 혼란스러워 졌을 수도 있지만 파일을 이동할 때 수행하는 것이 훨씬 쉽습니다. openssl x509
실제 인증서의 내용이 무엇인지에 돋보기가 빛납니다.