huijial 发表于 2018-12-3 09:24:48

Tomcat NIO, APR 模式下SSL 的配置以及如何配置Http 到 Https的跳转

  一般情况下,Tomcat都只是作为请求处理器而处在web 服务器例如Apache, ngnix之后的,但是对于小型的应用用让Tomcat 作为前端服务器也无妨。这里对Tomcat的一些配置最一下总结。
  

  NIO 模式下的SSL配置:
  步骤1 建立 keysore:
%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA  如果是第一次建立需要配置,可以还需要为keytool 设置进入密码。 通过这个命令生成的keystore包含了一个自动生成的key和自我签名的证书。
  

  如果你不想要keytool, 而是想用openssl 来生成证书也是可以的。你需要首先生成一个key文件
openssl genrsa -des3 -out server.key 4096  

  然后用以下根据key生成的一个csr文件

openssl req -config /path/to/openssl.cnf -new -key server.key -out server.csr  注意-config 后面是openssl的配置文件路径,一般是在openssl 安装路径中。
  最后我们生成certificate
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt  当然你也可以把你的key,和csr文件发给第三方认证组织例如verisign,又他们生成certificate文件发给你。

  

  有了我们的证书和key文件如何把它们导入到我们的keystore里面去呢?思路是首先生成一个pkcs12文件,然后导入或者转化为keystore文件

openssl pkcs12 -export -in host.crt -inkey host.key > host.p12keytool -importkeystore -srckeystore host.p12 -destkeystore host.jks -srcstoretype pkcs12  

  

  有了keystore 文件我们只需要在Tomcat的server.xml 文件加入一下配置即可
  
  如果你有8443 端口的配置,那么请覆盖他。protocol 请注 用 org.apache.coyote.http11.Http11NioProtocol 这样才会使用对8443端口的链接用nio模式处理。
  

  

  APR 模式下的SSL配置:
  APR 模式要相对简单一些, 有了上面openssl 生成的key文件和crt文件我们直接用加入配置:

  

  
  

  protocol 请注 用 org.apache.coyote.http11.Http11AprProtocol 这样才会使用对8443端口的链接用apr模式处理。 APR 配置在某些机器上会出现 fopen 函数找不到的错误,还没有找到原因,如果有知道的解决方法的朋友就告知。
  

  Http 转 Https

  由于我们的Tomcat当作了前端web服务器,那么默认的链接端口8080 需要修改为80,且redirectPort需要变为443

  
  

  




页: [1]
查看完整版本: Tomcat NIO, APR 模式下SSL 的配置以及如何配置Http 到 Https的跳转