linux系统nginx服务器上配置https协议
今天工作工作中老板提出一个要求:http协议不安全,我们需要一个相对安全的协议,
我说:老板,那用啥子呢?
老板想了一下:好,就用https,你去在nginx系统上配置一个;
我说:老板,没问题;
我的个乖乖,http不好吗?非得用https,关键是没配过啊,真是愁啊,但当时自己挖的坑怎么也得跳啊,没办法,得找资料啊,和度娘一番云雨过后,顿时傻眼,我勒个去,https协议得需要一个证书,关键是这证书得要钱啊,关键是小弟穷啊,于是把这件事和老板汇报的一下。
于是老板语重心长的说道:小x啊,你就不能自己生成一个证书;
当时脑袋顿时如遭五雷轰顶,卧槽,还有这种操作,于是又找度娘梅开两度,额,你还真别说,还真有!然后就站在前辈的肩膀上自己尝试着捣鼓一下,顺便写一点心得体会,与各位道友分享:
好,走:
进入linux系统,编译命令:/usr/local/nginx/sbin/nginx -V
如上图红色下划线,确保有红色方框中的这些参数;
如果没有,那也没关系,执行编译命令: ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_gzip_static_module (注意,此时的编译位置是:[[email protected] nginx-1.12.2])
此时,会报出如下错误:
表示你没有导入pcre library,那么执行导入命令:yum install pcre pcre-devel -y
重新编译,此时,又会出现如下错误:
表示没有导入openSSL library,那么到入即可:yum install openssl openssl-devel -y
再次重新编译,再执行命令:
make
make install
再创建服务器私钥: openssl genrsa -des3 -out server.key 1024
此时,会出现如下需要输入server.key:直接回车即可;
创建签名请求的证书:openssl req -new -key server.key -out server.csr
要求输入一些国家,省份,城市等等, 随便输入即可;
此时,输入命令: ll
可以看到ssl文件下多出了如下文件:
其中server,crt即为自生成的https证书;
然后,我们需要在nginx.conf配置文件中配置证书文件的路径: cd /usr/local/nginx/conf
红框即为配置文件,修改之前,最好备份: cp nginx.conf bak_nginx.conf
然后输入如下命令进入配置文件:vim nginx.conf
找到如下位置:
这里即为https的参数位置,添加如下信息:
server{
listen 80;
listen 443;
ssl on;
ssl_certificate /usr/local/nginx/conf/ssl/server.crt;
ssl_certificate_key /usr/local/nginx/conf/ssl/server_nopassword.key;
fastcgi_param HTTPS $https if_not_empty; #有https协议时自动使用https,否则忽略这个参数。
}
划红框的即为server.crt证书文件的路径;
然后,回到sbin目录下:cd /usr/local/nginx/sbin
启动nignx: /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
然后打开浏览器,输入: https://192.168.23.129 (注:不同的电脑ip不同)
此时, https证书导入成功。
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
然后, 又过了几天, 公司在阿里云买了台服务器, 又让我在阿里云的服务器上配置一个nginx, OMG, 这几天白干了,好吧, 装nginx和在虚拟机上一样, 只是需要在阿里云服务器上进行如下操作即可:按顺序点击红框所示即可。
这里只需输入如上,如下红框的内容即可;
最后,就OK了!!!