文档章节

Windows下Tomcat+nginx配置证书实现登录页https访问

IceRainYWC
 IceRainYWC
发布于 2012/08/27 22:06
字数 671
阅读 5167
收藏 11
点赞 3
评论 1

      最近公司出于安全考虑,需要将登录页做成https访问,其他页面仍采用http访问,环境是Linux平台,web服务器采用Tomcat + Nginx。之前没接触过nginx,这两天网上查资料,试了好多,终于有点小成果,特此做一下记录。目前还存在一些问题,希望各位多多指教。下面说一下我的具体做法:

1.将nginx解压到C盘根目录,重命名文件夹为Nginx(版本:1.3.5)。

2.生成自签名证书(采用OpenSSL生成),生成工具下载:绿色版OpenSSL工具.rar自签名测试证书工具.rar

3.将生成的证书文件server.cer和server.key分别都拷贝到Tomcat和Nginx的conf目录下,双击生成的root.cer根证书,然后安装证书,将其安装到受信任的根证书颁发机构(如不安装,访问时浏览器会提示证书错误)。

4.配置Tomcat的server.xml文件和web工程的web.xml文件:

https配置:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol" 
        SSLEnabled="true" maxThreads="150" 
        scheme="https" secure="true" disableUploadTimeout="true" 
        enableLookups="false" acceptCount="100" clientAuth="false"
        SSLCertificateFile="C:/Program Files/Tomcat 6.0/conf/server.cer" 
        SSLCertificateKeyFile="C:/Program Files/Tomcat 6.0/conf/server.key" 
        SSLVerifyClient="none" sslProtocol="TLS" />

虚拟目录配置:

<Host name="localhost"  appBase="C:\nginx\html"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">

web.xml文件中加入如下配置:

<!-- 登录页采用https访问 -->
	<security-constraint>
		<web-resource-collection>
			<web-resource-name>SSL</web-resource-name>
			<url-pattern>/index/*</url-pattern>
		</web-resource-collection>
		<user-data-constraint>
			<transport-guarantee>CONFIDENTIAL</transport-guarantee>
		</user-data-constraint>
	</security-constraint>

5.配置Nginx的nginx.conf文件:

server {
        listen       80;
        server_name  localhost;#域名,可以多个

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
        
       #配置规则
	     location / {
	          if (!-f $request_filename){
                rewrite ^/pages/common/(.*)$ /error.jsp;
            }
            root   yddweb;
            #index  index.jsp;
	          proxy_pass http://localhost:8080;
	          proxy_set_header Host $host:80;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Via "nginx";
       }

	     location ^~ /pages/$ {
            root   yddweb;
            #index  index.jsp;
	          proxy_pass http://localhost:8080;
	          proxy_set_header Host $host:80;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Via "nginx";
        }

        #location ~ \.(gif|jpg|png|js|css)$ {
            #规则
        #}
    }

    # HTTPS server
    #
    server {
        listen       443;
        server_name  localhost:443;

        ssl                  on;
        ssl_certificate      server.cer;#
        ssl_certificate_key  server.key;

        ssl_session_timeout  5m;

        #ssl_protocols  SSLv2 SSLv3 TLSv1;
        #ssl_ciphers  HIGH:!aNULL:!MD5;
        #ssl_prefer_server_ciphers   on;

        #配置规则
        location ^~ /index/.jsp$ {
            root   yddweb;
            index  login.jsp;
	          proxy_pass https://localhost:8443;
	          proxy_set_header Host $host:443;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Via "nginx";
        }
        location ~ ^/(WEB-INF)/ {
            deny all;
        }
    }
}

6.web工程的截图:

工程结构

LoginServlet的代码:

HttpSession session = request.getSession(true);
		String name = request.getParameter("name").trim();
		session.setAttribute("curuser", name);
		String url = "http://"+request.getServerName()+request.getContextPath()+"/pages/system/myinfo.jsp";		response.sendRedirect(url);

目前存在的问题(希望各位多多指教):

1.在本机访问https正常,其他机器访问浏览器提示证书错误。

2.location规则的配置,由于本人水平有限,对location规则的配置不是很了解,所以location目前不太会配置(配置要求:index目录下的页面采用https访问,其他页面全部采用http访问)。

参考资料:

证书生成与配置:http://www.ert7.com/install/sslinstall/1244.html

© 著作权归作者所有

共有 人打赏支持
IceRainYWC
粉丝 13
博文 106
码字总数 47690
作品 0
石家庄
程序员
加载中

评论(1)

boonya
boonya
楼主配置Windows Nginx+Tomcat负载均衡除了JDK还需要什么?我配了两三天只能看到静态的HTML页面,JSP页面的访问始终不成功求解。看阁下的文章上的截图是J2EE工程,请问这个怎么样配置才能实现J2EE的负载均衡呢?
关于使用证书实现https登录

项目目前要实现证书https登录,我目前正在学习和测试,有个疑问: 我目前环境:Tomcat+Nginx,分别在Tomcat和Nginx配置文件中配置了证书,登录页实现了https访问,登录后系统转向http首页,请...

IceRainYWC
2012/08/31
887
1
关于tomcat+Nginx https配置

@葉哥 你好,想跟你请教个问题: 最近,由于项目要实现登录和注册页面使用https方式访问,其他页面用http方式访问,环境就是tomcat+nginx,于是了解关于nginx的相关配置,今天看到您的一篇关...

IceRainYWC
2012/08/24
3.4K
3
关于Tomcat+nginx配置https登录

@红薯 你好,想跟你请教个问题:红薯大哥,我在配置Tomcat+nginx实现https登录中,有两点疑问向您请教:1. Tomcat是否需要在server.xml中配置证书,我在网上看到有人说Tomcat不需要配置证书;...

IceRainYWC
2012/09/04
940
2
tomcat+nginx登录页https访问证书问题

使用OpenSSL工具生成自签名证书后在本机Tomcat配置,发布程序访问https,浏览器提示证书错误,将附件中的boot.cer根证书安装到本机再次访问,浏览器正常,但使用其他机器访问,浏览器报证书错...

IceRainYWC
2012/08/26
1K
4
关于tomcat+Nginx https配置

@红薯 你好,想跟你请教个问题:关于你的一片帖子中提到Nginx+Tomcat HTTPS的问题,想请教一下,我的也是Tomcat上用OpenSSL生成的自签名证书可以访问工程了,由于服务器上是tomcat+nginx,所以...

IceRainYWC
2012/08/23
640
1
XenDesktop7.12配置StoreFront使用HTTPS

在之前的博文中,我们的客户端是使用http协议去登录StoreFront,为了提高安全性,我们可以为StoreFront申请服务器证书配置https加密访问,以及巧用IIS错误页进行https重定向,本文将介绍具体...

jianlong1990
06/26
0
0
Skype for business 2015 综合部署系列七:配置 Skype 边缘传输服务器

本篇博文进入Skype for business 2015 综合部署系列的第七部分:配置Skype for business Server 2015 边缘传输服务器 。首先详细介绍了在前端服务器lync.itwish.cn部署边缘池并发布拓扑相关过...

Wish_亮
06/28
0
0
Skype For Business 2015综合部署系列六:配置skype 持久聊天服务器

本篇博文进入Skype for business 2015 综合部署系列的第六部分:配置Skype for business Server 2015 持久聊天服务器 。首先详细介绍了在前端服务器lync.itwish.cn部署并发布聊天服务器拓扑相...

Wish_亮
2017/12/19
0
0
CAS实现单点登录

CAS介绍 开源的企业级单点登录解决方案 CAS Server 是需要独立部署的 Web 应用 CAS Client 支持非常多的客户端(这里指单点登录系统中的各个 Web 应用),包括 Java, .Net, PHP, Perl, Apache,...

小咔蹭
2013/12/05
2.8K
25
为Jenkins增加ssl(https)的访问支持(Windows/Linux)

前言: 增加ssl(https)的访问可以为部署在公网下的jenkins提供更安全的问题,最明显的好处应该是登录和jenkins-ci.jar的调用。 比如jenkins-ci.jar的调用,一般在windows下通过明文账号密码...

easonjim
2017/03/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

【面试题】盲人坐飞机

有100位乘客乘坐飞机,其中有一位是盲人,每位乘客都按自己的座位号就坐。由于盲人看不见自己的座位号,所以他可能会坐错位置,而自己的座位被占的乘客会随便找个座位就坐。问所有乘客都坐对...

garkey
今天
0
0
谈谈神秘的ES6——(二)ES6的变量

谈谈神秘的ES6——(二)ES6的变量 我们在《零基础入门JavaScript》的时候就说过,在ES5里,变量是有弊端的,我们先来回顾一下。 首先,在ES5中,我们所有的变量都是通过关键字var来定义的。...

JandenMa
今天
1
0
arts-week1

Algorithm 594. Longest Harmonious Subsequence - LeetCode 274. H-Index - LeetCode 219. Contains Duplicate II - LeetCode 217. Contains Duplicate - LeetCode 438. Find All Anagrams ......

yysue
今天
0
0
NNS拍卖合约

前言 关于NNS的介绍,这里就不多做描述,相关的信息可以查看NNS的白皮书http://doc.neons.name/zh_CN/latest/nns_background.html。 首先nns中使用的竞价货币是sgas,关于sgas介绍可以戳htt...

红烧飞鱼
今天
1
0
Java IO类库之管道流PipeInputStream与PipeOutputStream

一、java管道流介绍 在java多线程通信中管道通信是一种重要的通信方式,在java中我们通过配套使用管道输出流PipedOutputStream和管道输入流PipedInputStream完成线程间通信。多线程管道通信的...

老韭菜
今天
0
0
用Python绘制红楼梦词云图,竟然发现了这个!

Python在数据分析中越来越受欢迎,已经达到了统计学家对R的喜爱程度,Python的拥护者们当然不会落后于R,开发了一个个好玩的数据分析工具,下面我们来看看如何使用Python,来读红楼梦,绘制小...

猫咪编程
今天
1
0
Java中 发出请求获取别人的数据(阿里云 查询IP归属地)

1.效果 调用阿里云的接口 去定位IP地址 2. 代码 /** * 1. Java中远程调用方法 * http://localhost:8080/mavenssm20180519/invokingUrl.action * @Title: invokingUrl * @Description: * @ret......

Lucky_Me
今天
1
0
protobuf学习笔记

相关文档 Protocol buffers(protobuf)入门简介及性能分析 Protobuf学习 - 入门

OSC_fly
昨天
0
0
Mybaties入门介绍

Mybaties和Hibernate是我们在Java开发中应用的比较多的两个ORM框架。当然,目前Mybaties正在慢慢取代Hibernate,这是因为相比较Hibernate而言Mybaties性能更好,响应更快,更加灵活。我们在开...

王子城
昨天
2
0
编程学习笔记之python深入之装饰器案例及说明文档[图]

编程学习笔记之python深入之装饰器案例及说明文档[图] 装饰器即在不对一个函数体进行任何修改,以及不改变整体的原本意思的情况下,增加函数功能的新函数,因为这个新函数对旧函数进行了装饰...

原创小博客
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部