『壹』 如何在tomcat5下面配置ssl和tls协议
1.快速上手下面描述使用的变量$CATALINA_HOME指的是Tomcat 5的安装目录,大部分目录都基于它来解析。不过,如果你通过使用CATALINA_BASE目录来运行Tomcat 5的多个实例,则应该使用$CATALINA_BASE替代这些引用。要在Tomcat 5上安装、配置SSL,请按以下步骤做,如果需要更多信息,请看文档的剩下部分。 1.如果你运行的是JVM 1.3,请从http://java.sun.com/procts/jsse/下载JSSE 1.0.3(或更新版),然后扩展安装,或设置一个环境变量JSSE_HOME指向安装的目录。 2.执行下面的命令创建一个证书keystore:Windows:%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA Unix:$JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA 并指定密码:"changeit"。 3.取消$CATALINA_HOME/conf/server.xml中"SSL HTTP/1.1 Connector"的注释并做必要的调整。2.SSL简介SSL(Secure Socket Layer)是一种能让web浏览器和服务器在建立一个安全连接的基础上进行通信的技术。这意味着一端将数据加密后发送、传输,在另一端处理前解密。这是一个双向过程,服务端和客户端对所有要发出的数据都进行加密。另一个重要的方面是鉴权。这意味着你的最初和web服务器的通信是建立在安全连接基础上的。服务器将给你的web浏览器一套证书形式的信任状,来证明这个站点是它所声称的那一个站点。在某种情况下服务器也会向你的浏览器请求一个证书,要求证明你是你所声称的那个人。这就是"客户身份认证",尽管在实际应用中是business-to-business交易而不是个人用户。大部分使用了SSL的web服务器不要求客户认证。3.SSL和Tomcat注意,只有当Tomcat以独立模式运行时,才通常需要利用安全sockets来配置它。当Tomcat主要是作为运行在其它web服务器(如Apache或Microsoft IIS)后的Servlet/JSP容器时,通常需要配置主web服务器来处理从用户来的SSL连接。典型的,这个服务器将处理所有SSL有关的功能,然后在解密那些请求后再把以Tomcat为目的的请求转发给Tomcat。同样的,Tomcat将返回没经过加密的响应,由主服务器加密后发给用户浏览器。在这种情况下,Tomcat知道主服务器和客户端的通信是建立在安全连接上的(因为你的应用需要能够知道这个),但本身不参与加密或解密。4.证书(Certificates)为了实现SSL,web服务器必须有一个针对每个接口(IP地址)的接受安全连接的相关证书。在这个设计背后的理论是服务器应该提供某种‘你觉得它的所有者是谁'的担保,特别是在接受任何敏感信息前。然而对证书更深的解释超过了本文档的范围,可以把证书看作一个对Internet地址的"digital driver's license"。它声明了这个站点是什么公司的和一些关于站点所有者或管理员的基本联系信息。"driver's license"是被所有者加密签名的,因此对任何其它人来说,伪造都是极端困难的。对和电子商务或其它任何商业交易有关的网站来说,身份验证是一个重要问题。证书通常从一个著名的认证授权机构(Certificate Authority)比如VeriSign或Thawte处购买。CA将为它承认的证书担保,这些证书都能有效的被电子验证。因此如果你信任CA承认的证书,那么你就可以相信证书的有效性。然而在很多情况下,身份鉴定不是真正所关心的。管理员可能只不过想确保连接中的服务器传输和接收的数据是秘密的且不被网上其它任何想偷听的人所窃听。幸运的是,Java提供了一个叫keytool的相对简单的命令行工具,它能方便的创建一个"自签名"的证书。自签名证书只是用户生成的证书,它不会被任何著名的CA所官方注册,因此并不是真正可信的担保。这对你来说可能重要也可能不,取决于你的需要。5.运行SSL的小技巧当一个用户第一次访问你的网站的安全页面时,通常会给他一个包含证书详细信息(比如公司和联系名称)的对话框,并问他是否原意接受证书有效且继续交易。一些浏览器会提供一个永久接受该证书的选项,这样用户就不必为每次访问你的网站被提示而烦恼了。一旦被用户认可,证书将在整个浏览器的会话期间内被认为有效。虽然SSL协议被设计为有足够有效的安全性,但加密/解密从性能上考虑是一个昂贵的计算处理。并不是整个web应用都必需严格的在SSL上运行,开发者能够挑选哪些页面需要安全连接,哪些不需要。对一个适度繁忙的站点,仅仅将某些可能交换敏感信息的页面运行在SSL下是一种惯例。这通常包括登录页面、个人信息页面和购物车检查页面(信用卡信息可能会被发送)。一个应用里的任何页面都可以通过一个安全socket请求,只要在地址前用前缀"https:"替代"http:"。任何完全要求安全连接的页面应该检查和请求的协议类型,并采取https没有指定的适当的动作。在安全连接上使用基于名字的虚拟主机会有问题,这是SSL协议本身的设计局限。SSL的握手,就是客户浏览器接受服务器证书的过程,必须发生在HTTP请求达到之前。结果,包含性能主机名的请求信息不能在认证前确定,因此不可能分配多个证书给一个IP地址。如果在一个IP上的所有虚拟主机都需要依靠相同的证书鉴别,那么附加的虚拟主机不应干扰服务器上SSL的正常操作。然而,大部分客户浏览器会依靠证书的域名列表比较服务器的域名(即便是正式的、CA签名的证书)。如果域名不匹配,则浏览器会向用户显示一条警告。通常,只有基于地址的虚拟主机普遍在正式场合下使用SSL。6.配置6.1下载并安装JSSE从http://java.sun.com/procts/jsse/上下载版本1.0.3以上的Java Secure Socket Extensions (JSSE)包。如果你是从源代码安装的Tomcat,那么可能已经下载了这个包。如果你运行的是JDK 1.4.x,这些类已经直接集成到JDK中了,可以跳过这一步。解压后,有两种方法让它对Tomcat可用(选择一种): 1.通过复制三个JAR文件(jcert.jar、jnet.jar和jsse.jar)到$JAVA_HOME/jre/lib/ext目录将JSSE作为扩展安装。 2.创建一个新的环境变量JSSE_HOME,将其指向你解压的JSSE目录的绝对路径。6.2准备证书KeystoreTomcat通常只在JKS或PKCS12格式的keystores上执行。JKS是Java的标准"Java KeyStore"格式,并且是命令行工具创建的格式,此工具在JDK中。PKCS12是一个internet标准,且能够通过OpenSSL和Microsoft's Key-Manager操纵。不过通常对PKCS12的支持有些限制。要导入一个存在的证书到JKS keystore,请阅读关于keytool的文档(在JDK文档包中)。要导入一个存在的被你自己的CA签名的证书到使用OpenSSL的PKCS12 keystore,要执行一条象下面这样的命令:openssl pkcs12 -export -infile mycert.crt -inkey mykey.key \ -outfile mycert.p12 -name tomcat -CAfile myCA.crt \ -caname root -chain 需要更多高级用法,请参考OpenSSL文档。要创建一个临时的,包含单独的自签名的证书,在终端上执行下面的命令:Windows:%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA Unix:$JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA (RSA算法是首选的安全算法,并且确保了和其它服务器、组件的兼容性。)此命令将在你运行的目录下创建一个新文件,文件名为".keystore"。要指定文件的地址,在-keystore参数后跟文件的全路径。你需要在后面描述的server.xml配置文件中反映出这一变化。例:Windows:%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA \ -keystore \path\to\my\keystore Unix:$JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA \ -keystore /path/to/my/keystore 执行此命令后,会提示你输入keystore的密码。Tomcat使用的缺省密码是"changeit"(全小写),你也可以自己指定。同时也需要在后面描述的server.xml中指定自定义的密码。接下来会提示你关于此证书的说明,比如公司、联系名等等。此信息会显示给要访问你的安全页面的用户,因此请确保此处提供的信息和用户期望的匹配。最后,会提示你输入key password,这个password是这个证书特有的(区别于任何其它存储在同一个keystore文件中的证书)。你必须使用和keystore相同的密码。(通常keytool的提示会告诉你直接回车会自动完成此项。)如果所有的都完成了,你现在就有一个能给服务器使用的包含证书的keystore文件了。6.3编辑Tomcat配置文件最后一步是在$CATALINA_HOME/conf/server.xml中配置你的secure socket。在安装好的Tomcat里缺省server.xml中已经包含了一个SSL connector的元素样本。看起来如下:<– Define a SSL Coyote HTTP/1.1 Connector on port 8443 –><!–<Connector className="org.apache.coyote.tomcat5.CoyoteConnector" port="8443" minProcessors="5" maxProcessors="75" enableLookups="true" disableUploadTimeout="true" acceptCount="100" debug="0" scheme="https" secure="true"; clientAuth="false" sslProtocol="TLS"/>–>你会注意到Connector元素缺省被注释了,因此你需要删除它周围的注释标签。接着你可以自定义一些属性。要更多各种选项的信息,请参考Server Configuration Reference。下面的讨论只覆盖建立SSL通信时最感兴趣的那些属性。port属性(缺省为8443)是Tomcat监听安全连接的TCP/IP端口号。你可以将它改成任何你需要的端口号(如https通信的缺省端口443)。然而在许多操作系统上,Tomcat要使用一个1024以下的端口需要做一些特别的设置(这不在本文档范围内)。如果改变了此处的端口号,应该同时改变在non-SSL connector上redirectPort属性的值。作为Servlet 2.4 Specification中所必需的,这允许Tomcat自动重定向用户访问有安全限制的页面的请求,指出需要SSL。还有一些其它的选项配置SSL协议。你可能需要增加或改变下面的属性值,取决于你开始对keystore的配置:clientAuth 如果想要Tomcat为了使用这个socket而要求所有SSL客户出示一个客户证书,置该值为true。 keystoreFile 如果创建的keystore文件不在Tomcat认为的缺省位置(一个在Tomcat运行的home目录下的叫.keystore的文件),则加上该属性。可以指定一个绝对路径或依赖$CATALINA_BASE环境变量的相对路径。keystorePass 如果使用了一个与Tomcat预期不同的keystore(和证书)密码(changeit),则加入该属性。 keystoreType 如果使用了一个PKCS12 keystore,加入该属性。有效值是JKS和PKCS12。 sslProtocol socket使用的加密/解密协议。如果使用的是Sun的JVM,则不建议改变这个值。据说IBM的1.4.1版的TLS协议的实现和一些流行的浏览器不兼容。这种情况下,使用SSL。 ciphers 此socket允许使用的被逗号分隔的密码列表。缺省情况下,可以使用任何可用的密码。 algorithm 使用的X509算法。缺省为Sun的实现(SunX509)。对于IBM JVMS应该使用ibmX509。对于其它JVM,参考JVM文档取正确的值。 truststoreFile 用来验证客户证书的TrustStore文件。 truststorePass 访问TrustStore使用的密码。缺省值是keystorePass。 truststoreType 如果使用一个不同于正在使用的KeyStore的TrustStore格式,加入该属性。有效值是JKS和PKCS12。 如果创建的keystore文件不在Tomcat认为的缺省位置(一个在Tomcat运行的home目录下的叫.keystore的文件),则加上该属性。可以指定一个绝对路径或依赖$CATALINA_BASE环境变量的相对路径。keystorePass如果使用了一个与Tomcat预期不同的keystore(和证书)密码(changeit),则加入该属性。keystoreType如果使用了一个PKCS12 keystore,加入该属性。有效值是JKS和PKCS12。sslProtocolsocket使用的加密/解密协议。如果使用的是Sun的JVM,则不建议改变这个值。据说IBM的1.4.1版的TLS协议的实现和一些流行的浏览器不兼容。这种情况下,使用SSL。ciphers此socket允许使用的被逗号分隔的密码列表。缺省情况下,可以使用任何可用的密码。algorithm使用的X509算法。缺省为Sun的实现(SunX509)。对于IBM JVMS应该使用ibmX509。对于其它JVM,参考JVM文档取正确的值。truststoreFile用来验证客户证书的TrustStore文件。truststorePass访问TrustStore使用的密码。缺省值是keystorePass。truststoreType如果使用一个不同于正在使用的KeyStore的TrustStore格式,加入该属性。有效值是JKS和PKCS12。完成这些配置后,要重启Tomcat。你将能通过访问任何Tomcat支持的web应用。如:https://localhost:8443 现在你应该看到通常的Tomcat的splash页面(除非你修改了ROOT web应用)。如果没有看到,下面的节有一些解决问题的技巧。7.从一个CA安装一个证书为了从一个CA(如:verisign.com,thawte.com或trustcenter.de)获得并安装一个证书,应该已经阅读过前面的小节,现在跟随下面的指导:7.1创建一个本地Certificate Signing Request (CSR)为了从你选择的CA获得一个证书,应该先创建一个所谓的Certificate Signing Request (CSR)。CSR将被CA用来创建一个证明你的站点安全的证书。要创建CSR,遵循下面的步骤: 创建一个本地证书:keytool -genkey -alias tomcat -keyalg RSA -keystore注意:在一些情况下,为了创建一个运转的证书,你必须在字段"first- and lastname"中输入你的网站的域名(如:www.myside.org)。 然后创建CSR:keytool -certreq -keyalg RSA -alias tomcat -file certreq.csr -keystore现在,你有了一个叫certreq.csr的文件,你可以将它提交到CA(参考CA网站上的文档怎样做)。然后就得到了证书。7.2导入证书现在,你有了自己的证书,你可以将它导入到本地keystore。首先,必须导入一个所谓的Chain Certificate或Root Certificate到你的keystore。然后你可以继续导入你的证书。 7.2.1从你获得证书的CA下载Chain Certificate: 对于Verisign.com,去http://www.verisign.com/support/install/intermediate.html 对于Trustcenter.de,去http://www.trustcenter.de/certservices/cacerts/en/en.htm#server 对于Thawte.com,去http://www.thawte.com/certs/trustmap.html 7.2.2将Chain Certificate导入到keystore:keytool -import -alias root -keystore \ -trustcacerts -file 7.2.3最后,导入你的新证书:keytool -import -alias tomcat -keystore \ -trustcacerts -file 8.解决问题这里有一个安装SSL时常见的问题列表,和它们的解决方法: 1.在日志文件中出现"java.security.NoSuchAlgorithmException"的错误。 JVM没找到JSSE JAR文件。请照"下载和安装JSSE"节的指导做。 2.Tomcat启动时,出现"java.io.FileNotFoundException: {some-directory}/{some-file} not found"的错误。 一个可能的解释是Tomcat没有找到keystore文件。缺省的,Tomcat认为该文件在Tomcat运行的home目录下,名为 .keystore。如果该文件在其它地方,则需要在Factory元素中加入keystoreFile属性。 3.Tomcat启动时出现"java.io.FileNotFoundException: Keystore was tampered with, or password was incorrect"的错误。 假设确实没人篡改过keystore文件,最大的可能是Tomcat使用了一个和创建keystore文件时不同的密码。要修正它,可以重新创建keystore文件或在Factory中加入keystorePass属性。记住:密码是区分大小写的。
『贰』 如何配置tomcat证书
配置tomcat证书:
rar(点击下载)keytool(JDK中自带的工具)使用openssl生成根证书生成。解压openssl.rar到c:openssl下,在命令行中将目录转到c:opensslin。
生成根证书的私钥,生成文件cakey.pemopensslgenrsa-outcakey.pem1024。
根据私钥生成证书申请,生成文件careq.csropensslreq-new-outcareq.csr-keycakey.pem。在生成申请时需要填入相关的信息,根据部署的地点不同做相应的改变。
利用根证书申请生成自签名根证书,生成文件cacert.pemopensslx509-req-incareq.csr-outcacert.pem-signkeycakey.pem-days3650。至此根证书制作完毕,在openssl.rarin中已经包含生成根证书.bat点击执行即可。
生成tomcat证书库文件和证书申请:
1)生成证书库文件tomcatkey.jkskeytool-genkey-aliastomcat_server-keyalgRSA-keysize1024-validity"1825"-keypass123456-keystoretomcatkey.jks-storepass123456红色部分可以根据具体的部署情况做相应的改变
-alias证书库文件中私钥的别名
-keypass证书库文件私钥的密码
-keystore证书库文件的存储路径
-storepass证书库文件的密码,执行后需要填写相应的信息。名称和姓氏一定要填入服务器的域名或ip地址,否则部署之后会提示证书地址不匹配的错误。剩余的部分必须和根证书填写一致。
2)根据证书库文件生成证书申请,生成文件certreq.cerkeytool-certreq-aliastomcat_server-sigalg"MD5withRSA"-filecertreq.cer-keypass123456-keystoretomcatkey.jks-storepass123456。
制作服务器证书并导入证书库:
1)用根证书签名证书申请生成根证书,生成文件tomcatcert.pemopensslca-keyfilecakey.pem-certcacert.pem-incertreq.cer-outtomcatcert.pem-configopenssl.cnf-policypolicy_anything至此证书可能会失败,其原因是openssl证书数据库里已经存储了这个证书。解决办法是在目录openssldemocaindex.txt把里面的内容全部删除。重新执行上面的那条语句就可以了。
2)由于原有的格式都是pem格式,在导入证书库之前(即导入jks文件)需要转换成cer格式,生成文件cacert.cer、tomcatcert.ceropensslx509-incacert.pem-outcacert.cer opensslx509-intomcatcert.pem-outtomcatcert.cer。
3)将转换成功的cer文件导入证书库文件中首先导入根证书keytool-keystoretomcatkey.jks-import-aliasRootCA-filecacert.cer,然后再导入服务器证书。
『叁』 openssl跟tomcat有关吗
目需要在tomcat中配置ssl认证,学习了一下怎么配置,由于对pki认证体系、证书的制作和发放过程不了解,整个配置过程坎坷,所以配置成功后立即记录下来希望以后遇到类似的情况有所参考。本文讲述了如何使用 openssl 制作证书、keytool生成证书申请并将证书导入证书库、如何配置tomcat,和配置当中出现问题的解释。 本文用到的工具:OpenSSL.rar(点击下载) keytool(JDK中自带的工具) 使用 openssl 生成根证书生成1.解压openssl.rar 到 c:\openssl 下,在命令行中将目录转到 c:\openssl\bin2. 生成根证书的私钥,生成文件cakey.pem openssl genrsa -out cakey.pem 10243.根据私钥生成证书申请,生成文件careq.csr openssl req -new -out careq.csr -key cakey.pem 在生成申请时需要填入相关的信息,根据部署的地点不同做相应的改变 4. 利用根证书申请生成自签名根证书,生成文件cacert.pem openssl x509 -req -in careq.csr -out cacert.pem -signkey cakey.pem -days 3650 至此根证书制作完毕,为了方便起见,在 openssl.rar\bin\ 中已经包含 生成根证书.bat 点击执行即可。生成tomcat证书库文件和证书申请 1.生成证书库文件 tomcatkey.jks keytool -genkey -alias tomcat_server -keyalg RSA -keysize 1024 -validity "1825" -keypass 123456 -keystore tomcatkey.jks -storepass 123456 红色部分 可以根据具体的部署情况做相应的改变 -alias 证书库文件中私钥的别名 -keypass 证书库文件私钥的密码 -keystore 证书库文件的存储路径 -storepass 证书库文件的密码 执行后需要填写相应的信息 名称和姓氏 一定要填入服务器的域名或ip地址,否则部署之后会提示 证书地址不匹配 的错误 剩余的部分必须和根证书填写一致。(不知道根证书的内容,可以双击根证书查看其内容) 2.根据证书库文件生成证书申请,生成文件 certreq.cer keytool -certreq -alias tomcat_server -sigalg "MD5withRSA" -file certreq.cer -keypass 123456 -keystore tomcatkey.jks -storepass 123456 制作服务器证书并导入证书库1.用根证书签名证书申请生成根证书,生成文件 tomcatcert.pem openssl ca -keyfile cakey.pem -cert cacert.pem -in certreq.cer -out tomcatcert.pem -config openssl.cnf -policy policy_anything 至此证书可能会失败,其原因是openssl证书数据库里已经存储了这个证书 解决办法是在目录 openssl\democa\index.txt 把里面的内容全部删除(当然这个做法带来的危险是已有的证书也会删除,如果有耐心可以找到那条记录把他删除)重新执行上面的那条语句就可以了 2.由于原有的格式都是pem格式,在导入证书库之前(即导入jks文件)需要转换成cer格式,生成文件 cacert.cer、tomcatcert.cer openssl x509 -in cacert.pem -out cacert.cer openssl x509 -in tomcatcert.pem -out tomcatcert.cer3.将转换成功的cer文件导入证书库文件中 首先导入根证书 keytool -keystore tomcatkey.jks -import -alias RootCA -file cacert.cer 然后再导入服务器证书 keytool -keystore tomcatkey.jks -import -alias tomcat_server -file tomcatcert.cer
『肆』 关闭tomcat上弱加密套件
Web服务器SSL证书安全漏洞修补(已经验证) 需要改动两个文件:一个文件名为\apache\conf\httpd.conf,另一个文件为:\apache\conf\extra\httpd-ssl.conf;第一步:打开httpd.conf (1) 关闭不安全的SSL v2.0协议httpd.conf指令:SSLProtocol all -SSLv2(2) 关闭不安全的40位和56位加密套件httpd.conf指令:SSLCipherSuite HIGH:MEDIUM或 SSLCipherSuite -LOW(3) 关闭不安全的传统密钥重新协商功能httpd.conf指令:SSLInsecureRenegotiation off必须升级Apache到httpd 2.0以上版本(OpenSSL 0.9.8m以上版本)(4) 支持新推出的安全密钥重新协商功能httpd 2.0以上版本(OpenSSL 0.9.8m以上版本)缺省已经支持,升级Apache即可。 第二部:打开 httpd-ssl.conf找到SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL,替换为 SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5大功告成!
『伍』 如何用Tomcat和Openssl构建HTTPS双向认证环境
配置之前直接淘宝:Gworg,获取公网信任证书。配置Tomcat支持HTTPS双向认证(服务器将认证客户端证书):修改tomcat的conf目录里的server.xml文件($TOMCAT_HOME/conf/server.xml),找到类似下面内容的配置处,添加配置如下:<Connector port="8443(这个是HTTPS端口一般是443)"maxThreads="150" minSpareThreads="25" maxSpareThreads="75"enableLookups="false" disableUploadTimeout="true"acceptCount="100" debug="0" scheme="https" secure="true"clientAuth="true" sslProtocol="TLS"keystoreFile="conf/tomcat.jks(这个是证书文件)" keystorePass="密码" keystoreType="JKS"truststoreFile="conf/truststore.jks(这个是证书文件)" truststorePass="密码" truststoreType="JKS" />(题外话:其实HTTPS单向和双向认证配置的唯一区别是,把clientAuth改为false,去掉truststore的相关配置,就是单向HTTPS认证了,单向HTTPS用的可能更多,它主要在浏览器与f服务器交互的HTTP需要加密,而不需要验证客户端证书时使用。)经以上配置后,重启tomcat,服务器就支持HTTPS双向认证了。
『陆』 tomcat ssl 怎么配置pem 和key文件
下载APR依赖: APR 1.2+ development headers (libapr1-dev package)下载OpenSSL依赖:OpenSSL 0.9.7+ development headers (libssl-dev package)准备依赖包解压缩tomcat_home/bin/tomcat-native.tar.gz进入目录:tomcat-native-1.1.20-src/jni/native 详细安装见此目录下的BUILDING文件执行 export JAVA_HOME=/prog/java/jdk 设置JDK执行:./configure –with-apr=/usr/bin –with-ssl=/usr/bin执行:make执行:sudo make install –>安装到/usr/local/apr/lib执行:ln -s /usr/local/apr/lib/libtcnative-1.so $JAVA_HOME/jre/lib/amd64/重新启动tomcat看到:Sep 3, 2010 9:56:17 PM org.apache.catalina.core.AprLifecycleListener initINFO: Loaded APR based Apache Tomcat Native library 1.1.20.Sep 3, 2010 9:56:18 PM org.apache.catalina.core.AprLifecycleListener initINFO: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].Sep 3, 2010 9:56:18 PM org.apache.catalina.core.AprLifecycleListener lifecycleEventINFO: Failed to initialize the SSLEngine.Sep 3, 2010 9:56:18 PM org.apache.coyote.http11.Http11AprProtocol initINFO: Initializing Coyote HTTP/1.1 on http-8782Sep 3, 2010 9:56:18 PM org.apache.coyote.ajp.AjpAprProtocol initINFO: Initializing Coyote AJP/1.3 on ajp-8711Sep 3, 2010 9:56:18 PM org.apache.catalina.startup.Catalina loadINFO: Initialization processed in 840 ms配置SSL 非APR的SSL配置步骤创建keystore:jdk/bin/keytool -genkey -keystore tomcat.keystore -alias tomcat -keyalg RSA把tomcat.keystore放入${user.home}目录中,就是你的用户目录,当然你可以放入其他目录中修改tomcat的server.xml,增加Connector:Xml代码 APR环境的SSL配置(ssl不使用apr):<Connector port="9145" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" URIEncoding="UTF-8" keystoreFile="${user.home}/tomcat.keystore" keystorePass="cms4g-proxy-PaSsWoRd" maxThreads="20" /> 如果还是按照上面的#非APR的SSL配置步骤进行ssl配置,那么需要这么做:在Connector中配置protocol=org.apache.coyote.http11.Http11NioProtocol <Connector port="9145" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" protocol="org.apache.coyote.http11.Http11NioProtocol" URIEncoding="UTF-8" keystoreFile="${user.home}/tomcat.keystore" keystorePass="cms4g-proxy-PaSsWoRd" maxThreads="20" />但启动时会提示错误:Failed to initialize the SSLEngine.Sep 3, 2010 10:49:42 PM org.apache.catalina.core.AprLifecycleListener initINFO: Loaded APR based Apache Tomcat Native library 1.1.20.Sep 3, 2010 10:49:43 PM org.apache.catalina.core.AprLifecycleListener initINFO: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].Sep 3, 2010 10:49:43 PM org.apache.catalina.core.AprLifecycleListener lifecycleEventINFO: Failed to initialize the SSLEngine.Sep 3, 2010 10:49:43 PM org.apache.coyote.http11.Http11AprProtocol initINFO: Initializing Coyote HTTP/1.1 on http-8782Sep 3, 2010 10:49:43 PM org.apache.tomcat.util.net.NioSelectorPool getSharedSelectorINFO: Using a shared selector for servlet write/readSep 3, 2010 10:49:43 PM org.apache.coyote.http11.Http11NioProtocol initINFO: Initializing Coyote HTTP/1.1 on http-9145Sep 3, 2010 10:49:43 PM org.apache.coyote.ajp.AjpAprProtocol initINFO: Initializing Coyote AJP/1.3 on ajp-8711Sep 3, 2010 10:49:43 PM org.apache.catalina.startup.Catalina loadINFO: Initialization processed in 1162 ms虽然提示信息:Failed to initialize the SSLEngine.但ssl依然可以正常运行,要抑制此信息只要修改server.xml配置apr的sslengine=off即可,如 <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="off" />启动信息Sep 3, 2010 10:51:53 PM org.apache.catalina.core.AprLifecycleListener initINFO: Loaded APR based Apache Tomcat Native library 1.1.20.Sep 3, 2010 10:51:53 PM org.apache.catalina.core.AprLifecycleListener initINFO: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].Sep 3, 2010 10:51:54 PM org.apache.coyote.http11.Http11AprProtocol initINFO: Initializing Coyote HTTP/1.1 on http-8782Sep 3, 2010 10:51:54 PM org.apache.tomcat.util.net.NioSelectorPool getSharedSelectorINFO: Using a shared selector for servlet write/readSep 3, 2010 10:51:54 PM org.apache.coyote.http11.Http11NioProtocol initINFO: Initializing Coyote HTTP/1.1 on http-9145Sep 3, 2010 10:51:54 PM org.apache.coyote.ajp.AjpAprProtocol initINFO: Initializing Coyote AJP/1.3 on ajp-8711Sep 3, 2010 10:51:54 PM org.apache.catalina.startup.Catalina loadINFO: Initialization processed in 1081 ms