Nginx配置SSL证书——采用腾讯云SSL证书配置Nginx使用https访问

一、引言

为什么我们要配置这个SSL证书呀?

SSL证书,就是遵守SSL安全套接层协议的服务器数字证书,由浏览器受信任的根证书颁发机构在验证服务器身份后颁发,具有网站身份验证和加密传输等功能。SSL证书并不是什么高深的技术产品,只需要成功申请下发后,安装到网站服务器即可。当你访问一个网站时,如果发现浏览器的地址栏中显示的是“https://”,就说明这个网站已经安装部署了SSL证书。
网站安装SSL证书到底有哪些好处呢?简单整理几条给大家:
好处一:隐私信息加密。对网站传输的数据进行SSL加密,防止被黑客监听、窃取和篡改,有效保证用户的隐私信息。
好处二:提高网站排名。谷歌、百度等主流搜索引擎表示优先收录以HTTPS开头的网站,并赋予网站高权重,有效提高网站关键词在搜索引擎中的排名。
好处三:受浏览器信任。安装由权威证书颁发机构签发的证书,会成为谷歌、火狐等主流浏览器受信任的站点。
好处四:提升企业形象。安装高级SSL证书可以显示单位名称,大大提升企业的形象和可信度。
好处五:防止流量劫持。网站流量劫持现象频繁发生,安装SSL证书,能有效避免流量劫持。

 

二、准备工作

1、首先得有自己的一台云服务器,需要在后台把443端口开放。

2、购买一个域名(腾讯云、阿里云都行),.com的域名需要备案,其他的不需要备案但是也能访问,可能不稳定。

3、在腾讯云、阿里云申请一个SSL证书,有免费版的,然后下载下来如图。

 

 

 

配置SSL关联到对应域名

一般申请注册阶段就配置好了



 

 

 下载证书

 

                      下载证书.png

 

 

三、Nginx配置SSL

3.1将下载的ssl  nginx证书上传至云服务器

阿里云申请的ssl:nginx文件如下所示:

1,214292799730473.pem

2,214292799730473.key

 

腾讯云申请的ssl, nginx文件如下所示:

 

 

3.2开始安装配置nginx

一、安装编译工具及库文件


yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel


二、安装 PCRE(让 Nginx 支持 Rewrite 功能)

 
#下载最新版本的,注意不要用pcre2
wget https://jaist.dl.sourceforge.net/project/pcre/pcre/8.42/pcre-8.42.tar.gz
tar -xvf pcre-8.42.tar.gz
cd pcre-8.42 
#安装编译
./configure
make && make install
#查看pcre版本
pcre-config --version

 

 

三、安装nginx(源码安装)


#下载
wget https://nginx.org/download/nginx-1.15.9.tar.gz
tar -xvf nginx-1.15.9.tar.gz
cd nginx-1.15.9
#编译安装
./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.42 
make && make install
#查看版本
/usr/local/webserver/nginx/sbin/nginx -v
 

四、nginx配置

 


 


#启动
/usr/local/webserver/nginx/sbin/nginx
/usr/local/webserver/nginx/sbin/nginx -s reload            # 重新载入配置文件
/usr/local/webserver/nginx/sbin/nginx -s reopen            # 重启 Nginx
/usr/local/webserver/nginx/sbin/nginx -s stop              # 停止 Nginx

 

   

配置nginx配置文件(/usr/local/webserver/nginx/conf/nginx.conf)

user root;
#user  nobody;
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;

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    
   server {
        listen        443 ssl;
        server_name   www.relishfruit.com;
        ssl_certificate  /usr/local/nginx/conf/Nginx/1_www.relishfruit.com_bundle.crt;
        ssl_certificate_key  /usr/local/nginx/conf/Nginx/2_www.relishfruit.com.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;

      }

   server {
        listen       80;
        server_name  www.relishfruit.com;
        rewrite     ^   https://$server_name$request_uri? permanent;                            

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }   
    }
}

 

 

修改项为:


  • server_name 设置绑定的域名
  • ssl_certificate 证书
  • ssl_certificate_key 证书的私钥
  • ssl_protocols 使用的协议
  • ssl_ciphers 配置加密套件,写法遵循 openssl 标准

 


 

http 自动跳转 https (可选)

这时候的网站既可以使用http://请求,也可以使用https://请求。
如果想将所有的http请求自动跳转为https请求,在/usr/local/nginx/conf/nginx.conf添加

rewrite ^(.*) https://$host$1 permanent;

现在重启Nginx,Chrome应该能正常显示Https.如果只想使用Https连接,可以再添加一个server,然后跳转到https

server {
        listen 80;
    server_name   liuzhichao.com www.liuzhichao.com ;
        rewrite     ^   https://$server_name$request_uri? permanent;
}

 

重启nginx,测试如下:

 

 

 

 

注意事项:

1、nginx:[emerg]unknown directive ssl,就是这个错误提示

因为我们配置这个SSL证书需要引用到nginx的中SSL这模块,然而我们一开始编译的Nginx的时候并没有把SSL模块一起编译进去,所以导致这个错误的出现。

 
步骤一:我们先来到当初下载nginx的包压缩的解压目录,如果你是看小编写的教程安装的,解压目录应该在“/usr/loacl/src/”,绝大多数应该都是在这个目录下的,已经是一种规范了。

重启报错:缺少http_ssl_module模块

这是由于在最开始编译nginx时,没有加入http_ssl_module模块的原因导致的。
解决方案:重新编译一次nginx,并把http_ssl_module模块加上去。


    • 如果出现这个问题,一般情况下也可能没有安装openssl和openssl-devel模块。请安装这两个模块:
      yum install openssl
      yum install openssl-devel


步骤二:来到解压目录下后,按顺序执行一下命令:

               命令1、./configure --with-http_ssl_module  //重新添加这个ssl模块

                  注意如果没有出现错误,则直接看命令2即可 

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

                等待OpenSSL的安装完成后,再执行./configure ,最后在执行” 命令1" 即可。

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

               命令3、在我们执行完做命令后,我们可以查看到在nginx解压目录下,objs文件夹中多了一个nginx的文件,这个就是新版本的程序了。首先我们把之前的nginx先备份一下,
然后把新的程序复制过去覆盖之前的即可。 cp
/usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak cp objs/nginx /usr/local/nginx/sbin/nginx 命令4,最后我们来到Nginx安装目录下,来查看是否有安装ssl模块成功。执行./sbin/nginx -V即可看

重新启动nginx则OK了。

 

 

 

  

 

 

 

posted @ 2019-09-29 07:39  Mr_Yun  阅读(2841)  评论(0编辑  收藏  举报