文档章节

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

IceRainYWC
 IceRainYWC
发布于 2012/08/27 22:06
字数 671
阅读 5189
收藏 11

      最近公司出于安全考虑,需要将登录页做成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
博文 111
码字总数 49297
作品 0
石家庄
程序员
私信 提问
加载中

评论(1)

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

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

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

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

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

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

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

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

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

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

IceRainYWC
2012/08/23
761
1

没有更多内容

加载失败,请刷新页面

加载更多

Android Studio Unable to resolve dependency for错误的排查

记录一次Android Studio Unable to resolve dependency for错误的排查 Android Studio 3.2.1 错误提示 Unable to resolve dependency for... 原因:在gradle中设置的代理并没有gradle 4.6的版......

Gemini-Lin
11分钟前
0
0
java常用设计模式

设计模式; 一个程序员对设计模式的理解: “不懂”为什么要把很简单的东西搞得那么复杂。后来随着软件开发经验的增加才开始明白我所看到的“复杂”恰恰就是设计模式的精髓所在,我所理解的“...

呵呵哒灬
44分钟前
3
0
Kafka入门

1、Kafka使用背景 在我们大量使用分布式数据库、分布式计算集群的时候,是否会遇到这样的一些问题: 我们想分析下用户行为(pageviews),以便我们设计出更好的广告位 我想对用户的搜索关键词...

watermelon11
昨天
0
0
Cannot list resources Permission denied: user=Administrator, access=READ_EXECUTE, inode="/tmp"

Cannot list resources Permission denied: user=ÁõÎĺÁ, access=READ_EXECUTE, inode="/tmp":root:supergroup:drwx-wx-wx windows系统 Spring boot 整合hadoop时报错。 java.lang.Ille......

lwenhao
昨天
2
0
【结构型】- 享元模式

享元模式 作用:利用共享技术有效地支持大量细粒度对象的复用 享元模式状态 内部状态:在享元对象内部不随外界环境改变而改变的共享部分,存储于享元对象内部 外部状态:随着环境的改变而改变...

ZeroneLove
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部