내가 알아 낸 것 때문에 내 질문에 답합니다.
먼저 루트 CA와 중간 CA를 만들어야합니다. 언급 한대로 나는 this 튜토리얼을 따라 갔다. 그것은 매우 좋지만 강조 할 몇 가지 점이 있습니다.
당신이 당신의 root/ca
폴더의 위치로 디렉토리를 설정해야합니다 openssl.cnf
루트를 만드는. 이것은 지침에 명시되어 있지만 강조 표시하는 것이 좋습니다. 또한 기본값 (81-86 행)을 변경하여 루트 CA를 수행 할 때 준비되어 있는지 확인하십시오.당신의 중간 openssl.cnf
root/ca/intermediate
로 디렉터리를 변경하고 디폴트 기본값을 변경 (라인 81 ~ 86) 루트 openssl.cnf
와 일치하기를 만들 때
루트 인증서를 생성
좋은 일반 이름을
- 를 선택했다.
또한 openssl.cnf의 일부로 this 링크 당 subjectAltName을 추가해야합니다. usr_cert
및 server_cert
아래에 subjectAltName = @alt_names
을 추가하십시오. 그러면 인증서를 만들 때 필요한 주체 대체 이름이 추가됩니다. 나는 당신이 단지 server_cert
을 위해 이것을 정말로 필요로한다고 믿는다. 그러나 나는 안전을 위해서 (단지 어쨌든 user_cert
을 사용하지 않았다. DNS.1
은 localhost로 올바르게 설정됩니다.
중간 인증서를 만들 때 세부 정보는 루트 인증서에 대한 것과 동일해야합니다. 따라서 3 단계에서 조직 세부 정보를 복사해야하는 이유는 무엇입니까? 공통 이름은 달라야합니다.
조직의 세부 정보는 매우 익숙하지만 공통 이름은 localhost
으로 설정해야합니다.
당신이 버전 (데이터에 따라) 3로 설정되어 있는지 서명 된 서버 인증서 확인을 확인
은 주제 CN은 localhost
로 설정하고, X509v3 Subject Alternative Name
는 DNS:localhost
로 설정됩니다.
완료되면 Sring Boot 응용 프로그램에 제공 할 트러스트 스토어를 만들어야합니다. 나는 this 개의 자원을 사용했다. 나는 PKCS12가 새로운 표준과 봄 때문에 JKS로 변환 귀찮게하지 않았다
openssl pkcs12 -export -inkey ./intermediate/private/localhost.key.pem -in cert-chain.txt -out cert-chain.p12
다음 명령을 사용하여
cat ./intermediate/certs/localhost.cert.pem ./intermediate/certs/intermediate.cert.pem ./certs/ca.cert.pem > cert-chain.txt
가 그럼 난 내 상점을 작성한 다음 명령을 사용하여 내 인증서 체인을 생성 부팅은이 형식으로 잘 작동합니다.
이 시점에서 나는 KeyStore Explorer을 사용하여 키 저장소에 올바른 계층 구조가 있는지 확인했습니다. 그것은 하나의 인증서 (localhost)를 가지고 있었고 인증서 계층을 보았을 때 root -> intermediate -> localhost를 보았습니다.
다음 것은 내가 src/main/resources
아래의 키 스토어를 넣어 않았고 당신이 수도 봄 보안을 사용하는 경우 내 YAML 속성에서 다음 속성 파일 (일반 .properties 파일도 작동합니다)
server.port: 8443
server.ssl:
key-store: src/main/resources/cert-chain.p12
key-store-password: secretpassword
keyStoreType: PKCS12
추가 또한 security.require-ssl: true
을 사용해야합니다.
이 시점에서 ERR_CERT_AUTHORITY_INVALID
이 표시되지만 어쨌든 진행할 수 있습니다. 이는 브라우저에서 루트/중개 CA를 신뢰할 수 없기 때문입니다. 브라우저를 통해 인증서를 보는 경우 루트 -> 중간 -> 로컬 호스트 계층을 다시 한 번 확인해야합니다. 중간 인증서를 브라우저로 가져온 다음 브라우저를 다시 시작하십시오. 녹색 보안 자물쇠가 보입니다. 성공! 당신은 이제 안전합니다!
참고 : 가끔 Active content with certificate errors
오류가 발생했습니다.이 경우 here과 같이 사이트 저장소를 삭제하십시오.
내 server_cert 확장 프로그램 (이 리소스 덕분에, https://alexanderzeitler.com/articles/Fixing-Chrome-missing_subjectAltName-selfsigned-cert-openssl/)에 확장 기능을 추가하여 주체 대체 이름 문제를 해결할 수있었습니다. –