Tôi đã tạo khóa và csr trên bảng điều khiển, sử dụng tệp thực thi openssl. Sau đó, tôi đã gửi csr đến một CA và nhận lại chứng chỉ. Bây giờ tôi muốn nhập nó vào tomcat.tomcat không cung cấp chứng chỉ trung gian (https)
Vì vậy, tôi đã tạo ra một tập tin PKCS # 12 trong số chìa khóa của tôi và giấy chứng nhận của tôi:
openssl pkcs12 -export -in mycert.cert -inkey mykey.pem -out key_and_cert.p12
và sau đó tạo ra một keystore chứa nó:
keytool -importkeystore -deststorepass [password] -destkeystore keystore.jks -srckeystore key_and_cert.p12 -srcstoretype PKCS12 -srcstorepass [password]
Sau đó, tôi nhập chuỗi chứng chỉ trung gian. crt:
keytool -import -trustcacerts -alias root -file chain.crt -keystore keystore.jks
Đây là đầu ra của "keytool -keystore keystore.jks -list":
Keystore-Typ: JKS
Keystore-Provider: SUN
Ihr Keystore enthält 2 Einträge.
root, 14.11.2011, trustedCertEntry,
Zertifikatsfingerabdruck (MD5): [fingerprint]
1, 14.11.2011, PrivateKeyEntry,
Zertifikatsfingerabdruck (MD5): [fingerprint]
Các server.xml tomcat chứa:
<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" URIEncoding="UTF-8" compression="on"
sslProtocol="TLS"
keystoreFile="/[absolute-path]/keystore.jks"
keystorePass="[password]" />
Khi tôi khởi động lại tomcat, nó có thể ghi không có lỗi trong catalina.out, mọi thứ có vẻ là ok. Nhưng khi tôi chạy firefox, nó báo cáo
[domain] uses an invalid security certificate.
The certificate is not trusted because no issuer chain was provided.
(Error code: sec_error_unknown_issuer)
Chạy "openssl s_client -connect [miền]: 443 -showcerts" trả
CONNECTED(00000003)
depth=0 C = DE, OU = Domain Control Validated, CN = [domain]
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 C = DE, OU = Domain Control Validated, CN = [domain]
verify error:num=27:certificate not trusted
verify return:1
depth=0 C = DE, OU = Domain Control Validated, CN = [domain]
verify error:num=21:unable to verify the first certificate
verify return:1
---
Certificate chain
0 s:/C=DE/OU=Domain Control Validated/CN=[domain]
i:/C=BE/O=GlobalSign nv-sa/CN=GlobalSign Domain Validation CA - G2
-----BEGIN CERTIFICATE-----
[certificate from mycert.cert]
-----END CERTIFICATE-----
---
Server certificate
subject=/C=DE/OU=Domain Control Validated/CN=[domain]
issuer=/C=BE/O=GlobalSign nv-sa/CN=GlobalSign Domain Validation CA - G2
---
No client certificate CA names sent
---
SSL handshake has read 1777 bytes and written 289 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
Protocol : SSLv3
Cipher : ECDHE-RSA-AES256-SHA
Session-ID: [session-id]
Session-ID-ctx:
Master-Key: [master-key]
Key-Arg : None
PSK identity: None
PSK identity hint: None
Start Time: 1321268519
Timeout : 7200 (sec)
Verify return code: 21 (unable to verify the first certificate)
---
Tôi nghĩ tomcat không cung cấp chứng chỉ trung gian mặc dù nó biết rồi. Tôi có thể làm gì để làm cho tomcat mang nó?
Thông tin bổ sung: Khi nhập chứng chỉ pkcs12, không có lỗi chuỗi chứng chỉ vì lệnh -importkeystore không kiểm tra chuỗi. Tôi cũng đã cố gắng nhập chứng chỉ trung gian trước rồi gọi -importkeystore. Tôi nhận được kết quả tương tự.
chỉnh sửa: Tôi chỉ cố gắng một cách khác bằng cách chèn chuỗi trực tiếp trong PKCS # 12 chứng chỉ và nhận được lỗi sau:
$ openssl pkcs12 -export -CAfile chain.pem -in mycert.cert -inkey mykey.pem -out key_and_cert.p12 -name tomcat -chain
Error unable to get issuer certificate getting chain.
Nhưng giấy chứng nhận chuỗi là ok:
$ openssl verify chain.pem
chain.pem: OK
bạn có CA gốc trong chuỗi PEM không? – njzk2
điều gì mang lại cho bạn "openssl verification -CAfile chain.pem mycert.cert"? – njzk2