问:为什么要用https?
为了数据传输安全。
问:为什么用https传输就安全了?
这里:
http://blog.youkuaiyun.com/jasonjwl/article/details/50985271
问:Nginx和tomcat都要配置吗?
这里有两种情况:如果你在项目中是相对引用静态资源(js、css等)就需要配置nginx的ssh和tomcat的ssh。
例如:
<script type="text/javascript" src="/static/customer/js/common/webHelper.js"></script>
如果你是全路径引用如:
<link href="${contextPath}/styles/notebook/notebook_files/font.css" rel="stylesheet" type="text/css">
这样只用配置nginx为https及可。nginx和tomcat通信采用http就行。
问:nginx怎么配置https。
1.先去买个证书。
https://www.getssl.cn
引用:
解压后应包含两个文件:
yourdomain.com.crt (服务器证书) yourdomain.com.key (私钥文件)如果为空请将生成CSR时保存的私钥内容粘贴在文件中
环境检测,检测命令如下(测试nginx是否支持SSL)
nginx -V
如果有显示 –with-http_ssl_module 表示已编译openssl,支持安装ssl
如果没有安装请下载nginx源码重新编译
./configure --with-http_stub_status_module --with-http_ssl_module make && make install
配置Nginx
server { listen 80; listen 443 ssl; server_name www.getssl.cn; ssl_protocols TLSv1.2 TLSv1.1 TLSv1; ssl_certificate /etc/ssl/yourdomain.com.crt; ssl_certificate_key /etc/ssl/yourdomain.com.key; ssl_prefer_server_ciphers on; #自动跳转到HTTPS (可选) if ($server_port = 80) { rewrite ^(.*)$ https://$host$1 permanent; } location / { root /home/getssl/; index index.php; } }
以上配置仅供参考,其他参数请根据生产环境需要添加。
安装后重启nginx使其生效
centos6 service nginx restart centos7 systemctl restart nginx
问题排查:
如果使用CDN(加速器),需要在CDN上面安装证书,国内免费加速的都不支持https(已知阿里云cdn支持)
检查443端口是否启动 使用下面命令 netstat -apnt | grep 443 (如果没有启动检查配置文件或者端口是否冲突)
443端口如果已经启动,但不能访问,请检查防火墙(或者安全狗) ,允许443端口.
linux iptables使用下面命令:
iptables -A INPUT -p tcp -m tcp --dport https -j ACCEPT
问:tomcat 如何配置https:
一步: 进入Tomcat安装目录, d:/apache-tomcat-8.0.18, 把下载的jks文件放在tomcat安装目录即可。
d:/apache-tomcat-8.0.18/getssl.cn.jks
第二步: 打开tomcat配置文件 conf/server.xml
tomcat默认一般是8080端口或者 80端口,先找到这一段。
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
在这段下面插入下面配置:
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" sslEnabledProtocols="TLSv1.2,TLSv1.1,TLSv1" clientAuth="false" sslProtocol="TLS" keystoreFile="getssl.cn.jks" keystorePass="123456" />
- keystoreFile=”getssl.cn.jks” 【 jks 文件名需要修改】
- keystorePass=”123456″ 【jks密码】
注意事项:
- 防火墙要允许443端口
- 使用CDN,需要让CDN服务商安装SSL
- Tomcat 6.0上面配置如果无法启动,把protocol修改为 protocol=”HTTP/1.1″
- windows平台运行tomcat , bin目录下必须有tcnative-1.dll
org.apache.coyote.http11.Http11Protocol - blocking Java connector org.apache.coyote.http11.Http11NioProtocol - non blocking Java connector org.apache.coyote.http11.Http11AprProtocol - the APR/native connector. tomcat 修改DHE大小 -Djdk.tls.ephemeralDHKeySize=2048