我想生成一个自签名SSL证书,并将其与Tomcat一起使用。
我怎么能这样呢?
如果Tomcat是服务器,则不应编辑信任库,而应仅使用密钥库
>
运行以下命令生成SSL证书。
keytool-genkey-keyalg RSA-alias tomcat-keystore自签名。jks-有效性365-密钥大小2048
>
上面的命令导出证书,其别名是tomcat。
自签名。jks是密钥存储文件。
输入密钥库的密码。请注意此密码,因为您需要此密码来配置服务器。
默认情况下,密钥存储库密码设置为更改;您可以使用密钥工具实用程序的-store passwd选项将其更改为更安全的内容。
当提示输入名字和姓氏时,请输入服务器的域名。例如,myserver或myserver.mycompany.com
输入其他详细信息,例如组织单位、组织、城市、州和国家。
确认输入的信息正确无误。
当提示使用tomcat的“Enter key”密码时,按Enter以使用与密钥存储库密码相同的密码。
运行此命令以验证密钥存储的内容。
keytool-list-v-keystore-selfsigned.jks
>
v选项告诉密钥工具实用程序以人类可读的形式显示证书指纹。
出现提示时,输入步骤2中记下的密钥库密码。显示有关生成证书的基本信息。
验证证书的指纹。(验证“所有者”和“颁发者”是否相同。此外,您应该看到您在步骤3和4中提供的信息)除非指纹匹配,否则不要接受证书并将其安装在应用程序的信任存储中。
使用密钥工具实用程序的-export选项将证书从密钥存储库导出到单独的证书文件,然后您可以从中将其导入应用程序的信任存储库。例如,以下命令将上面显示的别名为tomcat的证书从密钥存储库(selfsigned.jks)导出到名为selfsigned.cer的证书文件:
keytool-导出-密钥库自签名。jks-storepass
>
密码是密钥库密码,请输入步骤2中记录的密钥库密码。
键工具实用程序以以下输出响应
证书存储在文件selfsigned.cer中
验证证书文件的内容。
>
您可以仔细检查证书文件的内容,以确保其中包含正确的证书。
密钥工具实用程序的-printcert选项列出了指定证书文件的内容。例如,以下命令列出了自签名的证书文件。在上一步中创建的cer:
keytool-printcert-v-file selfsigned.cer
v选项再次告诉密钥工具实用程序以人类可读的形式显示证书的指纹。
检查keytool-printcert命令的输出,确保证书正确。
如果您的应用程序的信任存储中存在过期的证书,则必须使用以下步骤将其删除,否则直接跳转到下一步13以导入证书。
从JAVA信任库中删除SSL证书并将其删除。
>
运行以下命令从JAVA信任存储中删除证书。
keytool-delete-noprompt-trustcacerts-alias tomcat-file selfsigned。cer-密钥库“$JAVA\u HOME/jre/lib/security/cacerts”
出现提示时,输入密码(默认情况下,密码为changeit)
运行以下命令以确认是否从JAVA信任存储中删除证书。
keytool-list-keystore“$JAVA_HOME/jre/lib/security/cacerts”| grep tomcat
出现提示时,输入密码(默认情况下,密码为changeit)
运行以下命令从系统中删除证书文件。
rm-fselfsigned.cer
从密钥存储中删除SSL证书并将其删除。
运行以下命令从密钥存储中删除证书。
keytool-delete-noprompt-trustcacerts-alias tomcat-keystore selfsigned.jks
密钥工具实用程序提示您输入密钥存储文件的密码:
输入密钥库密码:
运行以下命令以确认是否从密钥存储中删除证书。
keytools-list-keystore keytools-list-keystoreselfsigned.jks|grep tomcat
密钥工具实用程序提示您输入密钥存储文件的密码:
输入密钥库密码:
运行以下命令从系统中删除密钥存储文件。
rm-f自签名.jks
将证书导入应用程序的信任存储。关键工具实用程序的-import选项会从指定信任存储中的证书文件安装证书。
>
keytool-import-noprompt-trustcacerts-alias tomcat-file自签名。cer-密钥库“$JAVA\u HOME/jre/lib/security/cacerts”-storepass changeit
钥匙工具实用程序以以下输出响应:
证书已添加到密钥库
该证书现已完成,可以由Apache Tomcat服务器使用。
在tomcat服务器中。xml,在文件中查找连接器标记,添加密钥存储文件路径及其密码。请参考以下配置。
<Connector port="8080" protocol="HTTP/1.1"
redirectPort="443"
disableUploadTimeout="false"/>
<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
keystoreFile="selfsigned.jks" keystorePass="<password>"
clientAuth="false" acceptCount="100"/>
如果您想生成用于开发目的的SSL证书以与tomcat一起使用,那么可以使用这一行程序(在您的机器上需要JDK,所以这不使用openssl)。
keytool-genkey-keyalg RSA-noprompt-alias tomcat-dname“CN=localhost,OU=NA,O=NA,L=NA,S=NA,C=NA”-密钥库密钥库。jks-有效期9999-storepass changeme-keypass changeme
这将生成一个keystore.jks
文件,其密码为Changeme
,使用tomcat
的keyAlias
,该文件对localhost
有效9999天
在您的tomcat/conf/server.xml
中,您需要像在中这样指定它
keyAlias="tomcat"
keystoreFile="/path/to/my/keystore.jks"
keystorePass="changeme"
自Tomcat 8以来
根据文件:
NIO和NIO2 SSL配置属性已被弃用,取而代之的是默认的SSLHostConfig
这意味着上述值现在应作为连接器/SSLHostConfig/Certificate的属性,并具有以下名称:
certificateKeyAlias="tomcat"
certificateKeystoreFile="/path/to/my/keystore.jks"
certificateKeystorePassword="changeme"
尝试按照关于创建用于localhost的自签名证书的各种说明进行操作,大多数说明似乎是针对IIS的,但我尝试使用NodeJS/Express。它们都无法正常工作,因为在安装证书时,它不受信任。以下是我尝试失败的方法: null 编辑:在注释中建议问题是不受信任的证书根。我通过IE安装了证书,但它仍然不受信任。
我正在为嵌入式Linux设备添加HTTPS支持。我尝试通过以下步骤生成自签名证书: 这是可行的,但我得到一些错误,例如,谷歌Chrome:
问题内容: 我正在尝试将Android应用连接到使用自签名证书的启用SSL的服务器。我已经阅读了数十个教程,并且该应用程序现在正在接受证书并连接到服务器,但是我再也收不到任何数据。 我用来初始化套接字的原始代码是这样的: 之后,接收器线程的运行循环使用 socket.getInputStream() 访问输入流。只要我使用未加密的连接,它就可以正常工作。但是安全连接不会从套接字 检索任何数据 。我
问题:由于“无法联系服务器”,用户无法登录移动应用程序 调试消息:“类型错误: 网络请求失败” 尝试修复:重新启动服务器,验证数据库正在运行并且没有任何更改,重新启动服务器正在运行的VM,我使用postman检查了api。当我运行一个简单的POST请求时,收到以下消息: 连接到时出错https://app.something.com/api/Accounts/5076/sometest?filte
我正在遵循这些准则使用OpenSSL生成自签名证书。 有人有办法解决这个问题吗?该文件存在,并且其在conf文件中的路径名正确...
我是不是漏掉了什么?这是构建自签名证书的正确方法吗?