【发布时间】:2016-12-29 17:40:05
【问题描述】:
我想为相互认证配置 SSL。
我使用 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
我创建了信任库并导入证书:
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 支持。因此,我在 Servers 文件夹中配置了 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 项目。它运作良好。
问题是,当 myproject 在 URL https://localhost:8443/myproject 的服务器上运行时
谷歌浏览器显示红色三角形(此页面不安全(HTTPS 损坏))。
- 怎么了?
- 我应该将 client.jks 和 clienttruststore.jks 放在我的项目中的什么位置?
这张图显示问题:
【问题讨论】:
-
在 chrome 上,您可以将证书添加为例外吗?(如果没有意义,您能否在问题中添加 chrome 页面的快照,我可以给您正确的步骤)记住它是一个自签名证书。所以浏览器会标记它。
-
我编辑帖子并添加快照。如何将证书添加为例外?
-
您的网站已经在 https 上运行,但浏览器不接受证书,因为它是自签名的,并且没有由公认的证书颁发机构 (CA) 签名。您需要由 CA 签名的证书及其根证书。试试这个链接mulesoft.com/tcat/tomcat-ssl。祝你好运。
标签: java tomcat authentication ssl