问题描述
在使用Tomcat启用HTTPS协议后,若使用APR作为后端,可能会遇到以下报错:
Connector attribute SSLCertificateFile must be defined when using SSL with APR
这个错误提示指出,在使用APR作为后端的情况下,Tomcat的SSL配置需要指定证书文件路径。
解决方案
要解决这个问题,可以通过在Tomcat的配置文件中添加SSL证书路径的方式来解决。下面是一些具体步骤。
步骤1:打开Tomcat配置文件
在Tomcat的安装目录下找到conf目录,在该目录下找到server.xml文件。打开该文件,找到以下位置:
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="conf/localhost-rsa.jks"
type="RSA" />
</SSLHostConfig>
</Connector>
这里如果使用的是APR,请使用以下配置:
<Connector port="443" protocol="org.apache.coyote.http11.Http11AprProtocol"
maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateFile="conf/localhost.crt"
certificateKeyFile="conf/localhost.key"
certificateChainFile="conf/intermediate.crt"
type="RSA" />
</SSLHostConfig>
</Connector>
步骤2:添加证书文件路径
在第二个Connector标签中,添加以下参数:
SSLCertificateFile="<证书文件路径>"
例如:
<Connector port="443" protocol="org.apache.coyote.http11.Http11AprProtocol"
maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateFile="conf/localhost.crt"
certificateKeyFile="conf/localhost.key"
certificateChainFile="conf/intermediate.crt"
type="RSA" />
<OpenSSLConf sslProtocol="TLSv1.2" />
</SSLHostConfig>
<!-- 添加的部分 -->
<SSLHostConfig>
<Certificate certificateFile="/usr/local/ssl/certs/example.crt"
certificateKeyFile="/usr/local/ssl/private/example.key"
certificateChainFile="/usr/local/ssl/certs/ca.crt"
SSLCertificateFile="/usr/local/ssl/certs/example.crt"
type="RSA" />
</SSLHostConfig>
</Connector>
步骤3:重启Tomcat
重启Tomcat,再次访问HTTPS服务,即可顺利使用。
示例说明
下面我们以两种具体情况来说明如何应用上述解决方法。
示例1:使用自签名证书
若使用自签名证书,可以按照以下步骤来解决该问题:
- 生成自签名证书,使用openssl生成证书并保存到${CATALINA_HOME}/conf 目录下
-
修改server.xml中的SSL配置,添加证书文件路径,如下所示:
text
<Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"
maxThreads="150" SSLEnabled="true" secure="true"
SSLCertificateFile="${catalina.base}/conf/self.crt"
SSLCertificateKeyFile="${catalina.base}/conf/self.key"
/>
3. 重启Tomcat。
示例2:使用正式证书
若使用正式证书,可以按照以下步骤来解决该问题:
- 将正式证书、私钥,以及证书链文件放入具体的目录下。
-
修改server.xml中的SSL配置,添加证书文件路径,如下所示:
text
<Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"
maxThreads="150" SSLEnabled="true" secure="true"
SSLCertificateFile="/usr/local/ssl/certs/example.crt"
SSLCertificateKeyFile="/usr/local/ssl/private/example.key"
SSLCertificateChainFile="/usr/local/ssl/certs/ca.crt"
/>
3. 重启Tomcat。
以上就是如何解决Tomcatssl报错ConnectorattributeSSLCertificateFilemustbedefinedwhenusingSSLwithAPR的完整攻略。