pyOpenSSL
을 사용하여 X509 인증서를 만듭니다. 내 Java 응용 프로그램에서이 인증서를 사용할 수있게하려면이 인증서를 Java JKS 키 저장소로 가져와야합니다. 인증서에 subjectAltName
확장명을 추가하지 않는 한 정상적으로 작동합니다. 인증서가 다른 주제 세트가있는 경우, JKS 키 저장소로 가져 오기가 실패JKS 키 저장소에 subjectAltName (SAN)이있는 X509 인증서 가져 오기
[email protected]:~# openssl x509 -in certificate.crt -text -noout
Certificate:
Data:
Version: 1 (0x0)
Serial Number: 0 (0x0)
Signature Algorithm: sha256WithRSAEncryption
Issuer: OU=example.com, CN=my-server.example.com, O=example.com
Validity
Not Before: Aug 26 12:03:03 2016 GMT
Not After : Aug 25 12:03:03 2021 GMT
Subject: OU=example.com, CN=my-server.example.com, O=example.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:cc:a7:53:5a:38:...:11:2f
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Alternative Name:
DNS:localhost
Signature Algorithm: sha256WithRSAEncryption
ab:51:12:fb:a6:a6:...:0d:4b
는 IS :
[email protected]:~# /opt/oracle/java/jdk64-1.8.0_92/bin/keytool -keystore keystore -storepass changeit -noprompt -importcert -alias example -file certificate.crt -v
keytool error: java.lang.Exception: Input not an X.509 certificate
java.lang.Exception: Input not an X.509 certificate
at sun.security.tools.keytool.Main.doCommands(Main.java:1009)655)
at sun.security.tools.keytool.Main.main(Main.java:336)
[email protected]:~#
내가 명령 줄에 OpenSSL을 사용하여이 인증서를 인쇄 할 경우, 나는이 출력을 얻을 인증서가 분명히 유효합니다. oracle's documentation에 따르면 Java 8 키 도구는 SubjectAlternativeName
확장을 지원해야합니다. 작동하는 것 같다 - -
나는 키 도구 자체에 모든 것을 생성했을 때 내가 키 도구에 의해 생성 된 인증서가 두 번째 확장 X509v3 Subject Key Identifier
가 나타났습니다 :
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 1510484556 (0x5a082a4c)
Signature Algorithm: sha256WithRSAEncryption
Issuer: O=example.com, OU=example.com, CN=my-server.example.com
Validity
Not Before: Aug 26 12:52:43 2016 GMT
Not After : Nov 24 12:52:43 2016 GMT
Subject: O=example.com, OU=example.com, CN=my-server.example.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:99:b6:b1:11:a6:...:7b:39
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Alternative Name:
DNS:localhost
X509v3 Subject Key Identifier:
66:75:AD:7A:A5:19:AB:43:DE:55:E4:A7:4F:C2:3D:53:55:49:CE:48
Signature Algorithm: sha256WithRSAEncryption
50:7c:fe:c8:5d:1b:...:da:27
가 내 인증서에이 확장을 추가해야합니까를 pyOpenSSL
도 사용하십시오. 그러나 올바른 값은 무엇입니까?!