我试图使用keytool为运行在Tomcat 9上的java servlet应用程序生成自己的SSL证书。
rem 1) Key-Pair Generation For Client with:
keytool -genkey -keyalg RSA -keysize 1024 -keystore C:\cert\client1ks.jks -storepass test1234 -alias client1 -keypass client1pass -dname "CN=testuser1, OU=tmdev, O=dev, L=ist, ST=tr, C=tr"
rem 2) Public Cer Exported for Client with: test1public.cer
keytool -keystore C:\cert\client1ks.jks -storepass test1234 -alias client1 -keypass client1pass -exportcert -file C:\cert\test1public.cer
rem 3) Add extracted Client Public Cer to trusted store of Server KeyStore:
keytool -keystore "C:\cert\server.jks" -storepass server1234 -import -file "C:\cert\test1public.cer" -alias trustedclient1
rem 4) Key-Pair Generation For Server with:
keytool -genkey -keyalg RSA -keysize 1024 -keystore C:\cert\server.jks -storepass server1234 -alias server1 -keypass server1pass -dname "CN=server1, OU=tmdev, O=dev, L=ist, ST=tr, C=tr"
rem 5) Server Cer Exported for Client with: test1public.cer
keytool -keystore C:\cert\server.jks -storepass server1234 -alias server1 -keypass server1pass -exportcert -file C:\cert\serverpublic.cer
rem 6) Add extracted Server Public Cer to trusted store of Client KeyStore:
keytool -keystore C:\cert\client1ks.jks -storepass test1234 -import -file C:\cert\serverpublic.cer -alias trustedserver我在Tomcat配置中将其添加到server.xml中:
<Connector protocol="org.apache.coyote.http11.Http11NioProtocol"
port="443" SSLEnabled="true"
maxThreads="200" scheme="https" secure="true"
keystoreFile="C:\cert\client1ks.jks" keystorePass="test1234"
clientAuth="false" sslProtocol="TLS" /> 但我的浏览器仍然显示带有红色锁的Your connection to this site is not secure。为什么?
发布于 2020-12-16 22:32:35
您所做的是使用自签名证书设置服务器的步骤。您还没有告诉客户端(浏览器)您的服务器证书。
客户端像浏览器一样,默认情况下拥有一组证书颁发机构(CA)和Sub CA的it信任。在默认情况下,这些CA/SubCA签署的任何证书都将被客户端信任,您不需要做任何额外的步骤就可以做到这一点。但是,当您使用由客户端不信任的CA签名的自签名证书或证书时,必须显式地告诉客户端信任CA或自签名证书。
因此,要回答您的问题,由于您使用的是自签名证书,您必须将此证书添加到浏览器的信任库中。您可以在浏览器设置中找到浏览器信任库(通常是在安全的情况下)。
高级设置:
您可以自己创建一个证书链来复制信任链,首先创建一个自签名的CA证书,然后创建一个服务器密钥对并为该密钥对创建一个CSR,并让CA签名CSR来颁发证书。然后,将此证书与服务器密钥对相关联。在这种情况下,您只能将自签名的CA证书添加到浏览器的信任库中。您不会添加服务器证书。这是最理想的方法。您可以很容易地使用密钥存储-浏览器应用程序执行所有这些步骤,它具有良好而简单的GUI。如果使用这种方法,明天如果您需要保护第二台服务器,那么您所要做的就是为第二台服务器生成一个密钥对,并遵循上述步骤(除了将CA证书添加到信任库)。现在,您可以在浏览器上没有任何问题地启动第二个应用程序(您不会看到红色锁)。
安全备注:
只有在开发阶段才会这样做。对于应用程序的生产版本,您将使用一个由知名CA签名的真正证书来设置服务器。
https://stackoverflow.com/questions/65331431
复制相似问题