[내 환경은 Apache/2.2.17 (Win32) mod_ssl/2.2.17 OpenSSL/0.9.8o PHP/5.2입니다. 9-2 mod_jk/1.2.31 (비슷한 Apache/mod_jk/tomcat 사양의 Ubuntu 10.04.2 LTS에서 동일한 동작이 발생하지만)JavEnvVar "SSLVerifyClient require"(디렉토리 레벨에서 설정)
https를 제공하기위한 가상 호스트를 설정 했으므로 두 가지 유형의 디렉토리/앱이 있습니다. 하나는 '일반'https를 통해 제공되고 다른 하나는 클라이언트 인증 (클라이언트 인증서가 제공됨)과 함께 제공됩니다.
"SSLVerifyClient require"가 가상 호스트 수준에 배치되면 관련 JkEnvVar SSL_CLIENT_CERT가 정보를 올바르게 tomcat에 전파합니다. 디렉토리 레벨 (가상 호스트 내부)에 배치되면 그렇지 않습니다. 모든 단서 ??
worker.list=worker1
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009
및 conf의/추가/아파치 - ssl.conf가 포함되어 단지는 다음과 같다
...
JkWorkersFile conf/workers.properties
JkShmFile "C:/Program Files/Apache Software Foundation/Apache2.2/logs/mod_jk.shm"
JkLogFile "C:/Program Files/Apache Software Foundation/Apache2.2/logs/mod_jk.log"
JkLogLevel debug
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
Include conf/extra/httpd-ssl.conf
...
의 conf/workers.properties :
내 httpd.conf에 다음과 같은 라인을 포함 다음 줄 :
Listen 443
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl .crl
SSLPassPhraseDialog builtin
SSLSessionCache "shmcb:C:/Program Files/Apache Software Foundation/Apache2.2/logs/ssl_scache(512000)"
SSLSessionCacheTimeout 300
SSLMutex default
<VirtualHost _default_:443>
DocumentRoot "C:/https"
ServerName www.webrep.local
ServerAdmin [email protected]
ErrorLog "C:/Program Files/Apache Software Foundation/Apache2.2/logs/https-error.log"
TransferLog "C:/Program Files/Apache Software Foundation/Apache2.2/logs/https-access.log"
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile "C:/Program Files/Apache Software Foundation/Apache2.2/conf/ssl/my-server.cert"
SSLCertificateKeyFile "C:/Program Files/Apache Software Foundation/Apache2.2/conf/ssl/my-server.key"
SSLCACertificateFile "C:/Program Files/Apache Software Foundation/Apache2.2/conf/ssl/ca/myCA.pem"
SSLOptions +StdEnvVars +ExportCertData
Alias /examples/oneway/ "C:/https/oneway/"
<Directory "C:/https/oneway">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Alias /examples/twoway/ "C:/https/twoway/"
<Directory "C:/https/twoway">
SSLVerifyClient require
SSLVerifyDepth 10
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
BrowserMatch ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog "C:/Program Files/Apache Software Foundation/Apache2.2/logs/ssl_request.log" \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
JkMount /examples/oneway/servlets/* worker1
JkMount /examples/twoway/servlets/* worker1
JkExtractSSL Off
JkEnvVar SSL_CLIENT_S_DN
JkEnvVar SSL_CLIENT_CERT
</VirtualHost>
Tomcat에서 나는 간단한 서블릿 출력을 추가했습니다 :
request.getAttribute("SSL_CLIENT_CERT")
아래 :
C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\examples\WEB-INF\classes
나는 JkMount과 가 동일한 URL을 참조 할 때, 둘 다 작동하는 것처럼 것으로 나타났습니다. 내 구성에서 나는 VirtualHost : 443 안에 SSL 바 (클라이언트 인증을 요구함)와 같은 URL을위한 JkMount를 올리는 Location을 가지고있다. –
EJP