當tomcat使用Apr模式的時候,若是按照老方法配置https:html
控制檯會出現以下錯誤node
Connector attribute SSLCertificateFile must be defined when using SSL with APR
直接Google,不少答案都是不啓用APR,但這樣作將失去APR庫的價值,Tomcat性能必然降低。web
讓咱們打開Tomcat的文檔webapps/docs/apr.html,其中講到apache
<Connector port="443" maxHttpHeaderSize="8192"
maxThreads="150"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
SSLEnabled="true"
SSLCertificateFile="${catalina.base}/conf/localhost.crt"
SSLCertificateKeyFile="${catalina.base}/conf/localhost.key" />
SSLCertificateFile屬性好理解,是指證書文件,就是用keytool導出的那個。tomcat
而SSLCertificateKeyFile應該是指私鑰,這個東西從哪裏來呢,繼續找資料。app
在這裏:http://stackoverflow.com/questions/150167/how-do-i-list-export-private-keys-from-a-keystorewebapp
關鍵是這一段:工具
keytool -importkeystore -srckeystore keystore.jks \
-destkeystore intermediate.p12 -deststoretype PKCS12
Next, use OpenSSL to do the extraction to PEM:性能
openssl pkcs12 -in intermediate.p12 -out extracted.pem -nodes
先把keystore轉換爲pkcs12格式,而後使用openssl工具導出私鑰便可。.net
PS:上面描述的可能不是很清楚。
這裏給出完整的流程:
一、配置自簽名證書
自簽名證書配置教程
而後tomcat的server.xml是這樣配置的
tomcat7配置以下:(tomcat8/9有所不一樣)
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="true" sslProtocol="TLS"
keystoreFile="server.p12" keystorePass="changeit" keystoreType="PKCS12"
truststoreFile="truststore.jks" truststorePass="222222" truststoreType="JKS"/>
二、更改成Apr模式
參照教程tomcat配置Apr
而後tomcat的server.xml
<Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="true" sslProtocol="TLS"
SSLCertificateFile="server-cert.pem"
SSLCertificateKeyFile="server-key.pem" />
就能夠了,https+apr配置完成
三、配置了Apr的同時,若是須要以非ROOT方式啓動tomcat需注意:
非ROOT方式啓動tomcat教程:https://www.cnblogs.com/Tielong/p/5422599.html 若是配置了Apr模式,注意在上一步中建立tomcat用戶時useradd tomcat -M -d / -s /usr/sbin/nologin,不能設置爲notlogin,初步猜想是由於安裝APR時更改了/etc/profile系統環境變量,未登陸的user讀取不了,因此啓動tomcat會提示找不到apr,解決方案是tomcat用戶設爲可登陸,或者直接修改daemon.sh,把環境變量添加到最上邊,環境變量是:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib --------------------- 做者:歐陽陳曦 來源:CSDN 原文:https://blog.csdn.net/wokuailewozihao/article/details/81666215 版權聲明:本文爲博主原創文章,轉載請附上博文連接!