900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > Nginx服务器安装SSL证书实现Https访问

Nginx服务器安装SSL证书实现Https访问

时间:2024-05-02 08:06:58

相关推荐

Nginx服务器安装SSL证书实现Https访问

Https介绍

https的作用和原理及为什么要使用https请参考这篇文章

/11883699/2160032

基本作用是有HTTPS的时候,所有的数据传输都会被加密,你和网站之间的数据交流也就更加安全。

如果要启用HTTPS,我们就需要从证书授权机构处获取一个证书

HTTPS的信任继承基于预先安装在浏览器中的证书颁发机构又称CA机构。

(具体介绍CA机构请查看百度百科/item/CA中心/6471855?fr=aladdin)

因此,一个到某网站的HTTPS连接可被信任,当且仅当:

•用户相信他们的浏览器正确实现了HTTPS且安装了正确的证书颁发机构;

•用户相信证书颁发机构仅信任合法的网站;

•被访问的网站提供了一个有效的证书,意即,它是由一个被信任的证书颁发机构签发的(大部分浏览器会对无效的证书发出警告);

•该证书正确地验证了被访问的网站(如,访问时收到了给而不是其它组织的证书);

•或者互联网上相关的节点是值得信任的,或者用户相信本协议的加密层(TLS或SSL)不能被窃听者破坏。

服务器设置

要使一网络服务器准备好接受HTTPS连接,管理员必须创建一数字证书,并交由证书颁发机构签名以使浏览器接受。证书颁发机构会验证数字证书持有人和其声明的为同一人。浏览器通常都预装了证书颁发机构的证书,所以他们可以验证该签名。

申请证书:

在我所知的可以申请的两个平台一个是阿里云,一个是腾讯云,因为我首先接触的是阿里云,就以阿里云为例讲解

阿里云列出的几个大的CA机构有

GeoTrust是全球第二大数字证书颁发机构,已被Symantec收购。该品牌证书由工信部许可设立的电子认证服务机构“天威诚信”提供鉴证服务。赛门铁克(Symantec)是 SSL/TLS 证书的领先提供商,为全球一百多万台网络服务器提供安全防护。该品牌证书由工信部许可设立的电子认证服务机构“天威诚信”提供鉴证服务。GMO GlobalSign是全球最早的数字证书认证机构之一,一直致力于网络安全认证及数字证书服务,是一个备受信赖的 CA 和 SSL 数字证书提供商。

4.中国金融认证中心(CFCA)证书,由中国数字证书认证机构自主研发,纯国产证书。

选择赛门铁克------通配符DV型证书----前往售卖页面

注:免费的仅限于个人及测试使用,

1.申请信息填写

2.验证信息填写

验证信息这一步需要在你的域名解析下增加一个记录,依照上述证书申请信息填写

Nginx部署

验证通过后就可以部署到服务器了,这里以nginx为例讲解

官方教程:

/knowledge_detail/95491.html?spm=5176.54.cas.25.738956a7D32kaa

nginx下载后的证书包含两个

不明白证书后缀的含义请参考

/u011001084/article/details/54708258

/support/page/7

下面进入正式的服务器部署阶段,如果你对linux服务器熟悉其实也很简单

我的nginx安装目录是/usr/local/nginx,

在conf下的新建cert文件夹把上述下载的证书上传并改名

0114.key(私钥),0114.pem(公钥)

修改conf下的nginx.conf配置,完整配置如下,着重看两个server配置,需要你改动的是你的服务名,证书名

worker_processes 1;error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;pid logs/nginx.pid;events {worker_connections 1024;}http {include mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log logs/access.log main;sendfile on; keepalive_timeout 65;gzip on;server {#用户输入http自动转到httpslisten 80;server_name ;rewrite ^(.*) https://$server_name$1 permanent;}server{listen443;server_name ;ssl on;#开启sslroot html;index index.html index.htm;ssl_certificate cert/0114.pem;#.pem后缀的证书名ssl_certificate_key cert/0114.key;#.key后缀的证书名ssl_session_timeout 5m;ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_prefer_server_ciphers on;location / {#代理到本地8081端口的tomcat上proxy_pass http://localhost:8081;client_max_body_size 10m;}}}

修改后要重启nginx,重启之前需要验证下配置的正确性,这时候问题就开始暴漏了

进入nginx安装目录sbin下,输入命令./nginx -t下发现

配置项”ssl on”验证不通过,因为我们配置这个SSL证书需要引用到nginx的中SSL这模块,然而我们一开始编译的Nginx的时候并没有把SSL模块一起编译进去,所以导致这个错误的出现。既然在安装的时候没有编译ssl,难道把nginx卸载重新安装一次?不,我们只需要在原有的基础上添加ssl模块就行了。

看下编译安装nginx的时候,都编译安装的哪些模块。

1.输入命令/usr/local/nginx/sbin/nginx -V

2.下载相应的nginx源码包放在/usr/local/src下解压,进入解压后的目录执行

./configure --with-http_ssl_module//重新添加这个ssl模块

3.执行以上一条命令出现这个错误(./configure:错误:SSL模块需要OpenSSL库。),原因是因为缺少了OpenSSL,那我们再来安装一个即可执行:yum -y install openssl openssl-devel

4.执行./configure,再执行./configure --with-http_ssl_module

5.执行make命令,但是不要执行make install,因为make是用来编译的,而make install是安装,不然你整个nginx会重新覆盖的。

6.在我们执行完做命令后,我们可以查看到在nginx解压目录下,objs文件夹中多了一个nginx的文件,这个就是新版本的程序了。首先我们把之前的nginx先备份一下,然后把新的程序复制过去覆盖之前的即可。

cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak

cp objs/nginx /usr/local/nginx/sbin/nginx

7.最后我们来到Nginx安装目录下,来查看是否有安装ssl模块成功。执行./sbin/nginx -V即可看到如下图:

到此为止,nginx服务器配置工作已经结束,重启nginx,访问,访问失败ヾ(✿゚▽゚)ノ

(重启时尽量不要用./nginx -s reload,使用nginx -s stop关闭后,再开启)

输入netstat -tunlp查看端口占用情况

443和80端口开启

输入curl localhost 也能返回页面信息,说明本地能访问nginx,外部https或http请求却访问失败

查看防火墙中是否开放443端口访问,输入命令firewall-cmd --zone=public --query-port=443/tcp --permanent发现是关闭状态,防火墙这块没过多在意,https访问时被防火墙给拦截了,请求转发不到8081端口,firewall-cmd --zone=public --query-port=8081/tcp --permanent,返回状态no,防火墙开启443端口后就能使用https访问了,

(centos7防火墙命令详情参考/jeffYang1993/article/details/84334585)

输入

部署完毕

参考资料

/11883699/2160032

/weixin_38111957/article/details/81283121

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。