
요약
애플리케이션에서 신뢰 저장소로 사용할 .JKS 파일을 생성하려면 서버에서 자체 서명된 인증서를 다운로드해야 합니다. Red Hat 서버에서 어떻게 이를 수행할 수 있습니까?
내가 시도한 것
인증서를 얻기 위해 openssl을 사용해 보았습니다.
echo -n | openssl s_client -connect hostname.example.com:20000 -showcerts | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > downloadedcerts.cert
다음 메시지와 함께 실패합니다.
verify error:num=19:self signed certificate in certificate chain
실제로 이 서버의 루트 인증서는~이다CA가 아닌 자체 서명되었습니다. 저는 괜찮습니다. 루트 인증서는 우리 나라의 정부 기관에 속하지만 openssl은 인증서를 다운로드하기 위해 연결하지 않습니다.
Firefox에서 URL을 로드하고 수동으로 인증서 오류를 무시하고 인증서를 다운로드하는 것은 쉽지만 방화벽 때문에 데스크톱 컴퓨터에서 서버에 연결할 수 없습니다.
어떤 도움이라도 대단히 감사하겠습니다 :)
답변1
오류 확인:번호=19:인증서 체인의 자체 서명된 인증서
실제로 이 서버의 루트 인증서는 CA가 아닌 자체 서명되었습니다.
CA이지만 신뢰할 수 없습니다.)
거의 모든 것을 신뢰하는 브라우저와 달리 OpenSSL은 아무것도 신뢰하지 않습니다(무엇을 신뢰해야 하는지 알려주어야 합니다).
해당 국가의 CA 인증서를 다운로드합니다(일반적으로~ 아니다체인으로 전송됨). 그것은~ 아니다신뢰 지점이기 때문에 체인으로 전송됩니다. 당신은 이미 그것을 가지고 있고 그것을 신뢰해야합니다.
일반적으로 CA 인증서는 온라인에서 찾을 수 있습니다. 예를 들어,여기DigiCert의 것입니다.여기Verisign 등입니다. 다운로드한 인증서를 확인하세요. 검증은 까다로운 부분입니다. 브라우저는 이미 검증된 인증서 번들을 가지고 다니면서 이를 해결합니다.
해당 국가의 CA 인증서를 자체 파일에 저장하세요. 그런 다음 openssl s_client -connect hostname.example.com:20000 -CAfile my-country-ca.pem
. 또는 이와 유사한 s_client
것으로 완료됩니다 Verify OK (0)
.
답변2
원하는 인증 기관이 아닌 자신만의 인증 기관을 만드는 것이 좋습니다. 다음 단락 참조]. 그것은 일종의 PITA이며 수행 방법을 조사하면 실제보다 더 어려워 보입니다. 클라이언트의 신뢰할 수 있는 루트에 인증서를 넣을 가상 회사를 구성하면 자체 서명 인증서를 사용하는 대신 인증서에 서명할 수 있습니다.
나는 이 질문에 대한 Bruno의 답변에서 설명을 찾았습니다. https://stackoverflow.com/questions/4103472/ssl-handshake-fails-with-a-verisign-chain-certificate-that-contains-two-ca-s
루트 인증서가 자체 서명된 것으로 생각한 적은 없었지만 의미가 있습니다. 따라서 내가 올바르게 이해하고 있다면 원하는 인증서(첫 번째 인증서)뿐만 아니라 인증서 체인의 다른 모든 인증서도 얻게 됩니다. 루트 인증서가 메시지를 발생시키는 인증서입니다.