Tomcat在Apr模式下的Https雙向認證

當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  版權聲明:本文爲博主原創文章,轉載請附上博文連接!

相關文章
相關標籤/搜索