侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

为nginx+tomcat增加ssl访问支持

2023-12-08 星期五 / 0 评论 / 0 点赞 / 91 阅读 / 3508 字

昨天了解了一下ssl相关知识,然后动手将web服务器增加ssl访问支持。 服务器是——nginx反向代理+tomcat作为web服务器——这样的体系架构。 首先,使用openssl生成相关秘钥文件和证

昨天了解了一下ssl相关知识,然后动手将web服务器增加ssl访问支持。

服务器是——nginx反向代理+tomcat作为web服务器——这样的体系架构。

首先,使用openssl生成相关秘钥文件和证书,网上有许多这方面的资源,这里不再赘述。

然后,要判断nginx当前版本是否已经安装了ssl模块。将下面的代码写入nginx配置文件:

        listen 443 ssl;        ssl_certificate      /data/security/ssl_key_for_nginx.crt;        ssl_certificate_key  /data/security/ssl_key_for_nginx.key;        ssl_session_cache    shared:SSL:1m;        ssl_session_timeout  5m;        ssl_ciphers  HIGH:!aNULL:!MD5;        ssl_prefer_server_ciphers  on;

然后执行nginx配置文件的测试命令:

[root@iZ25qrs2oacZ sbin]# ./nginx -t

如果成功,说明支持ssl模块,否则,需要追加安装支持https的模块。

进入nginx的source目录,执行下列命令:

./configure --prefix=/opt/nginx --with-http_stub_status_module --with-http_ssl_module --with-zlib --with-pcremakemake install

安装完毕后,将下面的代码插入nginx配置文件中(这里参考了红薯的文章):

​    server {        listen 443 ssl;        ssl_certificate      /data/security/ssl_key_for_nginx.crt;        ssl_certificate_key  /data/security/ssl_key_for_nginx.key;        ssl_session_cache    shared:SSL:1m;        ssl_session_timeout  5m;        ssl_ciphers  HIGH:!aNULL:!MD5;        ssl_prefer_server_ciphers  on;        server_name myserver.com;        location ~* ^(.*)$ {                proxy_set_header host myserver.com;                proxy_pass http://localhost:8080;        }    }​

执行测试并通过。如果需要强行将http请求转换成https请求的话,再加上如下代码即可:

    server {        listen 80;        server_name myserver.com;        rewrite ^(.*) https://$server_name$1 permanent;    }

至此,外部对本服务器可以发起https请求了,nginx会将该请求转发至后台tomcat的8080端口。

**************************************分割线****************************************************

这里需要说明一点:红薯的文章中提到,在后端tomcat的server.xml文件中的,必须加入 proxyPort=443,否则会造成Tomcat 中的应用在读取 getScheme() 方法以及在 web.xml 中配置的一些安全策略会不起作用。这个我没有做测试,但是,如果https对应用是透明的话,这个也就不重要了。

<Connector port="8080" protocol="HTTP/1.1"               connectionTimeout="20000"               redirectPort="443"               proxyPort="443"/>

补充:openssl 生成秘钥和证书的命令:

 openssl genrsa -des3 -out my.key 1024 openssl req -new -key my.key -out my.csr openssl req -new -x509 -key my.key -out my.crt -days 3650

其中,my.key是RSA秘钥文件,my.crt是证书文件,my.csr是证书申请文件

参考资料:

http://www.oschina.net/question/12_213459#tags_nav
http://www.cnblogs.com/yanghuahui/archive/2012/06/25/2561568.html
 

广告 广告

评论区