阿国的博客

会写代码的厨子

NGINX,TOMCAT,HTPPS,SSL证书安装部署

NGINX反向代理端配置

将证书签发邮件中的包含服务器证书代码的文本复制出来(包括-----BEGIN CERTIFICATE----------END CERTIFICATE-----)粘贴到记事本等文本编辑器中。

为保障服务器证书在客户端的兼容性,服务器证书需要安装两张中级CA证书(不同品牌证书,可能只有一张中级证书)。

拼接证书

在服务器证书代码文本结尾,回车换行,并分别粘贴两张中级CA证书代码(包括-----BEGIN CERTIFICATE----------END CERTIFICATE-----,每串证书代码之间均需要使用回车换行分隔),修改文件扩展名,保存包含三段证书代码的文本文件为server.pem文件(如果只有一张中级证书,则只需要粘贴一张中级证书代码与服务器证书代码即可,并回车换行)。
安装NGINX。如果是自己编译的话,记得加上--WITH-HTTP_SSL_MODULE参数。

将PEM和SERVER.KEY文件复制到NGINX的CONF目录下;默认目录/ETC/NGINX/

修改NGINX 配置文件/ETC/NGINX/NGINX.CONF反向代理到TOMCAT

下面配置仅包含https的配置

server {
listen       443 ssl;
server_name oopay.kouclo.com;
keepalive_timeout   70;
ssl_certificate     server.pem;
ssl_certificate_key server.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-RC4-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:RC4-SHA:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!DSS:!PKS;
ssl_session_timeout 5m;
ssl_session_cache builtin:1000 shared:SSL:10m;
root /home/kouclo/apache-tomcat-8.0.18/webapps/oopay-web;
access_log logs/oopay.access.log;
index index.html index.htm index.jsp;
location / {
proxy_pass https://114.113.232.18:9443;
}
}

保存退出,并重启NGINX。先测试配置:NGINX –T ,如果OK的话执行命令:NGINX –S RELOAD

TOMCAT服务器配置

将上一步的SERVER.PEM和SERVER.KEY文件同样复制到TOMCAT的CONF目录下。

安装APR,APR需要三个组件

[apr-1.3.9.tar.gz](http://apr.apache.org/download.cgi
apr-util-1.3.9.tar.gz
tomcat-native.tar.gz) 在Tomcat的bin目录下
以上组件均可使用 ./configure && make && make install
来编译安装。native编译时需要带上 --with-apr=/usr/local/apr --with-ssl
设置 TOMCAT 整合 APR

以下是两种方法

修改 tomcat 的启动 shell ( catalina.sh ),在该文件中加入启动参数CATALINA_OPTS="-Djava.library.path=/usr/local/apr/lib"
也可以在环境变量中配置/etc/profile中加入

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib
source  /etc/profile

修改CONF目录下的SERVER.XML配置文件

<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<Connector
protocol="org.apache.coyote.http11.Http11AprProtocol"
port="9443" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
SSLCertificateFile="${catalina.base}/conf/server.pem"
SSLCertificateKeyFile="${catalina.base}/conf/server.key"
SSLVerifyClient="optional" SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"/>

在应用的WEB-INF/WEB.XML中指定必须走HTTPS的URL

<security-constraint>
        <web-resource-collection>
            <web-resource-name>SSL</web-resource-name>
            <url-pattern>/*</url-pattern>
        </web-resource-collection>
        <user-data-constraint>
            <transport-guarantee>CONFIDENTIAL</transport-guarantee>
        </user-data-constraint>
</security-constraint>

排除SSL跳转的配置:

<security-constraint>
    <web-resource-collection>
        <web-resource-name>SSL</web-resource-name>
        <url-pattern>/open/*</url-pattern>
    </web-resource-collection>
    <user-data-constraint>
        <transport-guarantee>NONE</transport-guarantee>
    </user-data-constraint>
</security-constraint>

防火墙设置

开放443端口:编辑/ETC/SYSCONFIG/IPTABLES文件确认添加了记录:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT

测试证书的安装情况

点击 这里输入你的网址,点击Check。查看配置的安全性。