当前位置: 首页 > 知识库问答 >
问题:

如何创建用于Tomcat的自签名SSL证书?

司寇照
2023-03-14

我想生成一个自签名SSL证书,并将其与Tomcat一起使用。

我怎么能这样呢?

共有3个答案

澹台俊材
2023-03-14

如果Tomcat是服务器,则不应编辑信任库,而应仅使用密钥库

东方国安
2023-03-14

>

  • 运行以下命令生成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"/>
    

  • 龙令雪
    2023-03-14

    如果您想生成用于开发目的的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,使用tomcatkeyAlias,该文件对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文件中的路径名正确...

    • 我是不是漏掉了什么?这是构建自签名证书的正确方法吗?