服务器Tomcat中的客户端身份验证
问题描述:
我想配置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放在我的项目中?
此图为问题:
答
你的证书是自签名的,这意味着它们不是由CA签名,这意味着除非你手动批准他们的Chrome不能信任他们。
生成证书时是否提供CN?它必须与您使用的主机名相匹配(在您的情况下,它是本地主机),如果CN不匹配,Chrome将不会允许SSL,除非您手动批准。
你说你想要相互认证,但你配置
clientAuth="false"
它应该是真的。至于密钥库,你应该使用相同的密钥库作为证书,因此当客户端连接到它的证书时,tomcat会验证相应的证书是否位于密钥库中。
希望它有帮助。
在Chrome上,你是否可以添加证书作为例外?(如果它没有意义,请你为该问题添加一个快照,我可以给你正确的步骤)请记住它的一个自签名证书。所以浏览器会标记它。 – jay
我编辑帖子并添加快照。如何将证书添加为例外? – Federico
您的网站已在使用https,但浏览器不接受证书,因为它的自签名并未由认可的证书颁发机构(CA)签署。您需要由CA签名的证书以及其根证书。试试这个链接https://www.mulesoft.com/tcat/tomcat-ssl。祝你好运。 – jay