我想配置SSL以進行相互身份驗證。服務器Tomcat中的客戶端身份驗證
我用eclipse + tomcat的8
工作,我做這個段落:
我創造了這樣的私有密鑰:
openssl genrsa -des3 -out client_key.pem 2048
openssl genrsa -des3 -out server_key.pem 2048
我創建自簽名證書:
openssl req -new -x509 -key client_key.pem -out client.pem -days 365 -config <path to>\openssl.cnf
openssl req -new -x509 -key server_key.pem -out server.pem -days 365 -config <path to>\openssl.cnf
我創建了truststore並導入證書:
keytool –importcert -trustcacerts –keystore clienttruststore.jks –storetype jks –storepass <truststore_password> -file <path-to-file>\server.pem
keytool –importcert -trustcacerts –keystore servertruststore.jks –storetype jks –storepass <server_truststore_password> -file <path-to-file>\client.pem
我結合證書和用於服務器和客戶端分別私鑰:
openssl pkcs12 –export –inkey client_key.pem –in client.pem –out client.p12
openssl pkcs12 –export –inkey server_key.pem –in server.pem –out server.p12
最後我轉換PKCS12格式在密鑰庫:
keytool –importkeystore –srckeystore client.p12 –srcstoretype pkcs12 –destkeystore client.jks –deststoretype jks
keytool –importkeystore –srckeystore server.p12 –srcstoretype pkcs12 –destkeystore server.jks –deststoretype jks
在此之後,我配置在Tomcat上配置SSL/TLS支持。所以,我在服務器文件夾中配置server.xml,並以這種方式設置連接器:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="path\to\server.jks" keystorePass="*******" keystoreType="JKS"
truststoreFile="path\to\servertruststore.jks" truststorePass="********" truststoreType="JKS" />
最後我清理並構建項目。
我在Eclipse中創建了一個名爲「myproject」的動態Web項目。它運作良好。
問題是當我的項目在URL上的服務器上運行時https://localhost:8443/myproject
Google Chrome顯示紅色三角形(此頁面不安全(破損的HTTPS))。
- 怎麼了?
- 我在哪裏把client.jks和clienttruststore.jks放在我的項目中?
此圖爲問題:
在Chrome上,你是否可以添加證書作爲例外?(如果它沒有意義,請你爲該問題添加一個快照,我可以給你正確的步驟)請記住它的一個自簽名證書。所以瀏覽器會標記它。 – jay
我編輯帖子並添加快照。如何將證書添加爲例外? – Federico
您的網站已在使用https,但瀏覽器不接受證書,因爲它的自簽名並未由認可的證書頒發機構(CA)簽署。您需要由CA簽名的證書以及其根證書。試試這個鏈接https://www.mulesoft.com/tcat/tomcat-ssl。祝你好運。 – jay