Nginx Https访问配置
Posted 老板请吃饭
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx Https访问配置相关的知识,希望对你有一定的参考价值。
目录
背景
2017年《中华人民共和国网络安全法》的正式实施,明确了信息系统主体在网络安全中的安全责任问题(简单、但不太严谨的说法:不开展等级保护等于违法),因此在很多项目建设中,尤其是电子政务涉及重要数据的项目,都需要通过第三方的网络安全等级测评(二级/三级)。
在等保测评中,其中一项测评得分项为“采用HTTPS协议”,关于为什么能实现对数据在传输过程中机密性和完整性保护,请自行百度。
一、思考过程
HTTPS的基础是SSL协议,需要签发SSL证书,目前常见的方式有两种:
一是通过可信CA机构来购买SSL证书,这种证书能够被各大浏览器识别,如在各大公有云网站都可购买(根据安全级别几百~几万/每年都有),用于互联网应用;二是自己签发的SSL证书,不被浏览器识别(不同浏览器会提醒不安全,除非用户自己导入证书并设置信任),这种证书一般用在仅包含特定用户的项目或局域网环境内。
本文中针对的就是自签发SSL证书应用,并通过Nginx配置来实现项目的HTTPS路径访问。
二、具体步骤
第一步:签发SSL证书
关于签发SSL证书,有3种方法(推荐使用方法1)。
方法1:在线生成工具(此网站为宝藏网站,工具箱中有很多实用的工具,建议收藏时常服用。)
1)输入证书信息,既然是自签名有效期设置长一些
当前这个网站签出的证书颁发机构是MYSSL.com并不受浏览器信任。
2)下载证书
下载证书,需要用到的文件是服务端证书cert.pem和私钥private.key,其他的证书链full_chain.pem、根证书myssl_root.cer、ECC中间证书myssl_ecc_middle.cer建议也一并保存。
方法2:用openssl或java keytools
方法3:用java keytools和openssl
参考文章:keytool生成密钥与证书并在nginx配置https(需要使用一小段java代码)
或者参考:利用openssl主要进行格式转化
对于nginx,其实就是要获取到证书(pem、cer、crt)和私钥(key)。
当你了解了几个格式之间的关系,那么你就可以通过命令或者工具获取nginx或者其他web服务软件所需的证书格式。
第二步:检查Nginx是否安装SSL模块
Windows版本Nginx目前都是已经自带SSL模块。
Linux版本默认编译是不带SSL模块的,所以必须重新编译一下,方法如下:
到Nginx安装目录下执行
./nginx -V
如果出现 (configure arguments: --with-http_ssl_module), 则已安装(下面的步骤可以跳过,直接进行第四步)
第三步:安装Nginx SSL模块
解压缩目录:/root/nginx
安装目录:/usr/local/nginx
一般进入到解压缩目录,输入
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
接下来执行
#切记不要执行make install,否则会重新安装nginx
make
上述操作执行完成以后,你的目录下会出现objs文件夹,文件夹内存在nginx文件,如图:
#停止nginx服务
./nginx -s stop
#替换之前的nginx
cp /root/nginx/objs/nginx /usr/local/nginx/sbin
#注意这里是大写的V,小写的只显示版本号
./nginx -V
如果出现了configure arguments: --with-http_ssl_module 证明已经安装成功。
提示:替换后再执行 -V命令如果提示权限不足,先给这个nginx文件提升权限。
第四步:Nginx配置
Nginx配置很简单,一般默认conf文件中的证书路径修改即可
第五步:客户端配置
如果自签发的域名证书,一般需要配置host文件,才能访问
Windows的host文件路径:
C:\\Windows\\System32\\drivers\\etc
Linux的host文件路径:
/etc/hosts
这样就可以访问路径:https://myssltest.com
至于浏览器提示不安全如何处理,目前已知的方法是导入信任证书来解决,经过研究并不完美,后续再研究。
题外:除了配置host文件,还可以自己搭建DNS服务,则需要配置网络连接中的DNS配置,参考文章: DNS:从零搭建公司内网DNS服务器。
三、总结
通过上述步骤完成Nginx配置自签名SSL证书的HTTPS协议访问,我们发现都需要在客户端进行配置工作,无论是导入证书、配置host都是比较专业的操作,那么在系统设计时能够在登录页做好引导是十分必要的。
四、后续
写完之后发现可写的内容还有很多,分批赶制中:
TO DO LIST:
和SSL相关:
1、SSL原理,国密SM2如何结合;
2、各种格式的证书文件之间关系和转换;
3、商业互联网 SSL证书购买,免费和付费之间差异;
其他:
1、Nginx常用配置及命令整理;
2、关于linux使用用户权限和各类软件的权限如何划分。
以上是关于Nginx Https访问配置的主要内容,如果未能解决你的问题,请参考以下文章
阿里云上,Ubuntu下配置Nginx,在tomcat中加了https协议就不可以了