使用XCA

时间:2015-07-09 14:55:39

标签: java tomcat ssl cryptography

我最近发现了XCA工具来管理与加密或安全相关的证书,密钥等(请查看here )。

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

xca screen

现在,我想要做的是使用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 with certificate chain file,pem with all tr​​usted certificates,pem with all certificates ...)。

感谢您的帮助!

修改 我已经按照this教程设置了所有内容(本指南是西班牙语)。我已在Firefox,Chrome,Internet Explorer和Safari上对其进行了测试。它工作的独特浏览器是Firefox ...我收到以下错误:ERR_CERT_INVALID

ERR_CERT_INVALID

我已经意识到可能导致此问题的原因......我有时会使用SHA-1 alg来制作这些证书。我将使用其他算法重复此过程。

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

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

1 个答案:

答案 0 :(得分:0)

由于您使用的是APR连接器,因此您应该使用PEM文件(其他连接器使用Java密钥库)是正确的。请注意一个&#34; PEM文件&#34;只描述文件类型而不是其内容。

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

  1. 服务器的私钥
  2. 服务器的证书
  3. 有一些方法可以在单个文件中配置这些工件,但如果将每个工件放在一个单独的文件中,它会更容易理解。为密钥创建一个名为[servername].key的文件,为证书设置另一个名为[servername].crt的文件,这有点传统。

    在没有使用客户端证书的情况下,首先验证是否已正确配置TLS 将更容易,因此请先尝试,然后再添加client-cert配置。

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

    SSLCertificateFile="[servername].crt" 
    SSLCertificateKeyFile="[servername].key" 
    

    您不需要将这些属性中的任何一个设置为任何属性:

    SSLCertificateChainFile
    SSLCACertificateFile
    

    不要将密码套件设置为&#34; ALL&#34; ...这将使密码的安全性基本为零。尝试类似SSLCipherSuite="HIGH"的内容。您想在线阅读一些关于如何为现代部署配置一套体面的密码套件的信息。