首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用本地CA为本地服务器创建本地SSL证书

如何使用本地CA为本地服务器创建本地SSL证书
EN

Stack Overflow用户
提问于 2020-12-16 21:33:04
回答 1查看 389关注 0票数 0

我试图使用keytool为运行在Tomcat 9上的java servlet应用程序生成自己的SSL证书。

代码语言:javascript
复制
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中:

代码语言:javascript
复制
<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。为什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-16 22:32:35

您所做的是使用自签名证书设置服务器的步骤。您还没有告诉客户端(浏览器)您的服务器证书。

客户端像浏览器一样,默认情况下拥有一组证书颁发机构(CA)和Sub CA的it信任。在默认情况下,这些CA/SubCA签署的任何证书都将被客户端信任,您不需要做任何额外的步骤就可以做到这一点。但是,当您使用由客户端不信任的CA签名的自签名证书或证书时,必须显式地告诉客户端信任CA或自签名证书。

因此,要回答您的问题,由于您使用的是自签名证书,您必须将此证书添加到浏览器的信任库中。您可以在浏览器设置中找到浏览器信任库(通常是在安全的情况下)。

高级设置:

您可以自己创建一个证书链来复制信任链,首先创建一个自签名的CA证书,然后创建一个服务器密钥对并为该密钥对创建一个CSR,并让CA签名CSR来颁发证书。然后,将此证书与服务器密钥对相关联。在这种情况下,您只能将自签名的CA证书添加到浏览器的信任库中。您不会添加服务器证书。这是最理想的方法。您可以很容易地使用密钥存储-浏览器应用程序执行所有这些步骤,它具有良好而简单的GUI。如果使用这种方法,明天如果您需要保护第二台服务器,那么您所要做的就是为第二台服务器生成一个密钥对,并遵循上述步骤(除了将CA证书添加到信任库)。现在,您可以在浏览器上没有任何问题地启动第二个应用程序(您不会看到红色锁)。

安全备注:

只有在开发阶段才会这样做。对于应用程序的生产版本,您将使用一个由知名CA签名的真正证书来设置服务器。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65331431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档