Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 配置Tomcat 8.0';使用XCA访问SSL_Java_Tomcat_Ssl_Cryptography - Fatal编程技术网

Java 配置Tomcat 8.0';使用XCA访问SSL

Java 配置Tomcat 8.0';使用XCA访问SSL,java,tomcat,ssl,cryptography,Java,Tomcat,Ssl,Cryptography,我最近发现了一个XCA工具,可以管理与加密或安全相关的证书、密钥等(请查看) 到目前为止,我已经创建了一个自签名CA证书,并用它签署了我的服务器和客户端证书: 现在,我要做的是使用XCA的导出文件配置Tomcat,以便使用SSL: <Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"

我最近发现了一个XCA工具,可以管理与加密或安全相关的证书、密钥等(请查看)

到目前为止,我已经创建了一个自签名CA证书,并用它签署了我的服务器和客户端证书:

现在,我要做的是使用XCA的导出文件配置Tomcat,以便使用SSL:

<Connector 
                        port="8443" 
                        protocol="org.apache.coyote.http11.Http11AprProtocol"
                        maxThreads="150" 
                        SSLEnabled="true" 
                        scheme="https" 
                        secure="true" 
                        clientAuth="true" 
                        sslProtocol="TLSv1.2" 
                        SSLVerifyClient="require" 
                        SSLCipherSuite="ALL" 
                        SSLCertificateFile="??" 
                        SSLCertificateKeyFile="??" 
                        SSLCertificateChainFile="??"
                        SSLCACertificateFile="??" />

所以我的问题来了:我必须导出哪些文件,以及将它们放在Tomcat连接器的何处?(PEM,具有证书链文件的PEM,具有所有受信任证书的PEM,具有所有证书的PEM…)

谢谢你的帮助

编辑: 我已经按照教程进行了设置(本指南是西班牙语的)。我已经在Firefox、Chrome、Internet Explorer和Safari上进行了测试。它工作的唯一浏览器是Firefox。。。我收到以下错误:ERR\u CERT\u无效

我已经意识到是什么导致了这个问题。。。我有时使用SHA-1 alg来制作这些证书。我将使用另一个算法重复这个过程

编辑2 将哈希算法从SHA-1更改为SHA-512后,没有任何更改

编辑3
Chrome、Internet Explorer或Safari在安全方面似乎比Firefox更严格。我用Java尝试了一个客户端,它使用HTTPS连接到我的web服务,工作正常:)。

因为您使用的是APR连接器,所以您应该使用PEM文件是正确的(其他连接器使用Java密钥库)。请注意,“PEM文件”只是描述文件类型,而不是其内容

您需要两个工件来配置TLS:

  • 服务器的私钥
  • 服务器的证书
  • 有多种方法可以在单个文件中配置这些工件,但如果将每个工件都放在单独的文件中,则更容易理解。有点传统的做法是,密钥使用名为
    [servername].key的文件,证书使用名为
    [servername].crt
    的文件

    在不使用客户端证书的情况下,首先验证TLS是否正确配置会更容易,因此请先尝试,然后在上面添加客户端证书配置

    现在您已经有了这些文件,与SSL相关的属性值有些明显:

    SSLCertificateFile="[servername].crt" 
    SSLCertificateKeyFile="[servername].key" 
    
    您不需要将以下任一属性设置为任何值:

    SSLCertificateChainFile
    SSLCACertificateFile
    
    不要将密码套件设置为“全部”。。。这将使密码基本上零安全。尝试类似于
    SSLCipherSuite=“HIGH”
    的方法。您将需要在线阅读一些关于如何为现代部署配置一组合适的密码套件的内容