SSLconfiguration,Tomcat与Apache和mod_jk

我期待使用tomcat连接器mod_jk来configurationtomcat 6和apache web服务器的SSL。 我对此很新,所以请耐心等待。

我有购买和使用密钥库文件在tomcat中configuration的SSL证书。 如果直接通过https访问tomcat,这是完美的工作。 现在我需要在Tomcat前面的apache,我的问题是,我需要提供证书都在tomcat和apache或只是tomcat? 是不是阿帕奇只是传递请求到tomcat(使用JkExtractSSL),并让它处理ssl身份validation(证书的validation)?

如果需要在Apache和Tomcat中configuration证书path,那么我有cert.p7b和certreq.csr文件,这肯定不是apache兼容的,请告诉我该怎么做?

到目前为止,我有以下configuration:

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中没有configurationSSLCertificateFile和SSLCertificateKeyFile,因为我不确定,如果在tomcat和apache web服务器中都需要。 我已经使用密钥库文件在tomcat中configuration了它。

SSL用于encryption客户端和Web服务之间的通信。 如果你把Apache放在Tomcat前面,那么你需要使用SSL证书来configurationApache,而你根本不需要Tomcat,因为Apache正在处理所有的客户端通信。

如果需要在Apache和Tomcat中configuration证书path,那么我有cert.p7b和certreq.csr文件,这肯定不是apache兼容的,请告诉我该怎么做?

.csr文件是您的证书请求,并不重要。

这个问题有一些链接,可以帮助你将你的.p7b文件转换成PEM编码的证书,用于Apache。

您还可以使用-exportcert命令从您的密钥库中导出PEM编码的证书:

 keytool -exportcert -alias <alias> | openssl x509 -inform der 

JkExtractSSL指令告诉Apache将一些与SSL相关的信息传递给Tomcat。 根据这个文件 ,这包括以下的环境variables:

  • SSL_CIPHER
  • SSL_CIPHER_USEKEYSIZE
  • SSL_SESSION_ID
  • SSL_CLIENT_CERT_CHAIN_ n

好吧,看来我不能评论你的post,所以我发布这个答案。 感谢您的答复。 这帮助我清楚了几件事情。 所以根据您的回应,我build议您使用keytool -exportcert命令生成.cer文件。 但是,现在当我启动Apache,我得到以下错误:

  Error: "[error] mod_ssl: Init: Private key not found (OpenSSL library error follows [error] OpenSSL: error:0D084069:asn1 encoding routines:d2i_ASN1_SET:bad tag [error] OpenSSL: 

我做了一些谷歌,发现“Apache无法读取密码保护私钥”。 钥匙不应该与证书一起出口吗? 显然不是。 那么我如何让Apache读私钥,我在哪里可以find私钥?