nginx+tomcat配置ssl实现https

前言

本文主体为单向认证的配置方式,生成证书的方式放于最后附录里面。

实例中tomcat版本为tomcat9。

纯tomcat篇

仅为tomcat时,进入tomcat目录/conf/server.xml中,添加如下代码(具体参数请根据实际情况修改),并重启tomcat即可。若使用自定义的证书查看时使用ie为佳,chrome会直接屏蔽域名访问的链接(提示"此网站无法提供安全连接",以致纠结好长时间以为自己配置失败了呢= =),ip访问一般都会提示非安全链接,点击忽略继续就好。

关键代码

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true"  
       maxThreads="150" scheme="https" secure="true"  
       clientAuth="false" sslProtocol="TLS"   
       keystoreFile="C:\00Work\01Programming\01Java\JavaEE\localhost.keystore" keystorePass="123456"/>

clientAuth     false(单向认证)/true(双向认证)

keystoreFile    证书所在目录

keystorePass    创建证书“keystore”的密码

nginx+tomcat篇

nginx中在conf目录下的 nginx.conf文件中添加如下代码,tomcat目录/conf/server.xml中设置好相应domain即可。

关键代码

 server {
      listen 443; 
      server_name domain;#要访问https的域名
      ssl on;
      root html;
      index index.html index.htm;
      ssl_certificate   C:/zhonya/keytool/ssl/domain.crt;
      ssl_certificate_key  C:/zhonya/keytool/ssl/domain.key;
      ssl_session_timeout 5m;
      ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
      ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL;
      ssl_prefer_server_ciphers on;
      location  / {
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header Host $http_host;
		proxy_set_header X-Forwarded-Proto https;
		proxy_redirect off;
		proxy_connect_timeout      240;
		proxy_send_timeout         240;
		proxy_read_timeout         240;
		# note, there is not SSL here! plain HTTP is used
		proxy_pass http://domain

		proxy_set_header Upgrade $http_upgrade;  
		proxy_set_header Connection "upgrade";
      }
    }

附录

Java的keytool生成证书

方法一:

1、CMD命令

keytool -genkeypair -alias "tomcat" -keyalg "RSA" -keystore "D:\wind\tomcat\keytool\tomcat.keystore"   -validity 36500

2.输入密码等相应内容

此处暂时不再过多叙述,具体的可查看:

http://lixor.iteye.com/blog/1532655

方法二:

keytool -genkeypair -alias "server"  -keyalg "RSA" -keysize 1024 -keypass "windtomcat" -keystore D:\wind\tomcat\keytool\server.jks -storepass windtomcat -validity 36500 -dname "CN=域名1,CN=域名2,CN=域名3,OU=wind,O=SJ,L=test,ST=HB,C=CN"

据说这种方法可以生成多域名证书,由于当初在chrome中测试始终出现错误提示(本文开始时说的情况),最终没做过多验证。

参考地址:

http://www.xuebuyuan.com/371801.html

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序小工

【PHP】第三方登录OAuth2.0

对于网站应用程序,涉及到登录和第三方 api 接口时,都会接触到 Token 等概念,而这部分的逻辑原理则是来自于 OAuth 授权协议, 目前的 OAuth...

67420
来自专栏

Spring MVC 3中关于url-pattern设成"/"后,资源访问问题

SpringMVC3中关于url-pattern设成"/"后,CSS等资源的访问会报错:No mapping found for HTTP request wi...

16640
来自专栏懒人开发

鸿洋AutoLayout代码分析(二):获取Manifest中的值

从AndroidManifest.xml中去取值,自己觉得应该和 PackageManager 或 Manifest 有关 (Manifest 简单是一个容器...

24420
来自专栏懒人开发

Zookeeper应用:HBase的HA简单实现

相对应hadoop的高可用,HBase配置简单很多 HBase中可以启动多个HMaster,通过Zookeeper的Master Election机制保证总有...

60130
来自专栏JAVA后端开发

解决SpringMVC使用fastJson后Long类型丢失精度的问题

1K30
来自专栏Android-薛之涛

Android 基本常识

这些常识性的东西呢,都是我在开发指出遇到的,以及后来在开发中个人慢慢理解,今天来做个总结,如有错误,还望指出,相互学习。

18340
来自专栏nice_每一天

提高Maven下载jar包的速度

找到settings.xml中的<localRepository>节点,修改为你的只定义路径。如图所示:

62210
来自专栏JAVA后端开发

maven中打不同JDK版本的jar包

最近项目中,I商机用jdk1.7,而ltc用jdk1.8,所以提供给他们的api都要不同的版本

93220
来自专栏知道一点点

SVG初识

个人认为现在svg可能有点过时了,svg的很多功能css3或者canvas都能做到很好的效果,

11320
来自专栏JAVA后端开发

修复shiro重定向引起的Response for preflight is invalid (redirect)的网络报错问题

最近集成shiro到项目中,遇到该一个报复Response for preflight is invalid (redirect)的问题。

6.6K20

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励