SSL 配置,Tomcat 與 Apache 和 mod_jk
我正在尋找使用 tomcat 連接器 mod_jk 配置帶有 tomcat 6 和 apache web 伺服器的 SSL。我對此很陌生,所以請多多包涵。
我使用密鑰庫文件在 tomcat 中購買和配置了 SSL 證書。如果直接通過 https 訪問 tomcat 就完美了。現在我需要在 tomcat 前面使用 apache,我的問題是,我需要在 tomcat 和 apache 中提供證書還是只在 tomcat 中提供證書?apache 不應該只是將請求傳遞給 tomcat(使用 JkExtractSSL)並讓它處理 ssl 身份驗證(證書驗證)嗎?
如果需要在 apache 和 tomcat 中配置證書路徑,那麼我有 cert.p7b 和 certreq.csr 文件,它們肯定不兼容 apache,你能告訴我該怎麼做嗎?
到目前為止,我有以下配置:
httpd.conf:
LoadModule ssl_module modules/mod_ssl.so LoadModule jk_module modules/mod_jk.so JkWorkersFile /usr/local/apache2/conf/workers.properties JkShmFile logs/mod_jk.shm JkLogFile logs/mod_jk.log JkLogLevel info JkLogStampFormat "[%a %b %d %H:%M:%S %Y] " JkMount /mywebapp/* worker1 JkExtractSSL On JkHTTPSIndicator HTTPS JkSESSIONIndicator SSL_SESSION_ID JkCIPHERIndicator SSL_CIPHER JkCERTSIndicator SSL_CLIENT_CERT <VirtualHost _default_:80> DocumentRoot "/var/lib/tomcat6/webapps/mywebapp" Alias /mywebap "/var/lib/tomcat6/webapps/mywebapp" <Directory "/var/lib/tomcat6/webapps/mywebapp"> Options Indexes FollowSymLinks AllowOverride NONE Order allow,deny Allow from all </Directory> <Location "/mywebapp/WEB-INF/"> AllowOverride None Deny from all </Location> </VirtualHost> Include conf/extra/httpd-ssl.conf
httpd-ssl-conf:
<VirtualHost _default_:443> DocumentRoot "/var/lib/tomcat6/webapps/mywebapp" SSLEngine on SSLCipherSuite ALL:!ADH:!EXP56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL SSLOptions +StdEnvVars +ExportCertData Alias /mywebapp "/var/lib/tomcat6/webapps/mywebapp" <Directory "/var/lib/tomcat6/webapps/mywebapp"> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory> JkMount /mywebapp/* worker1 <Location "/mywebapp/WEB-INF/"> AllowOverride None Deny from all </Location> </VirtualHost>
這裡要提到的重要一點是,httpd-ssl.conf 中沒有配置 SSLCertificateFile 和 SSLCertificateKeyFile,因為我不確定是否在 tomcat 和 apache web 伺服器中都需要它。我已經使用密鑰庫文件在 tomcat 中配置了它。
SSL 用於加密客戶端和您的 Web 服務之間的通信。如果您將 Apache 放在 Tomcat 前面,那麼您需要使用 SSL 證書配置 Apache……而 Tomcat 根本不需要它,因為 Apache 正在處理所有客戶端通信。
如果需要在 apache 和 tomcat 中配置證書路徑,那麼我有 cert.p7b 和 certreq.csr 文件,它們肯定不兼容 apache,你能告訴我該怎麼做嗎?
該
.csr
文件是您的證書請求,並不重要。此問題 的連結可幫助您將
.p7b
文件轉換為 PEM 編碼的證書以供 Apache 使用。您還可以使用以下
-exportcert
命令從您的密鑰庫中導出 PEM 編碼的證書:keytool -exportcert -alias <alias> | openssl x509 -inform der
該
JkExtractSSL
指令告訴 Apache 將一些 SSL 相關資訊傳遞給 Tomcat。根據此文件,這包括以下環境變數:
SSL_CIPHER
SSL_CIPHER_USEKEYSIZE
SSL_SESSION_ID
SSL_CLIENT_CERT_CHAIN_
n