Nginx部署SSL证书

前提:

购买了腾讯的服务器之后,可以免费领取一个一年的SSL证书,本文主要是获取到证书后部署。

步骤1

首先在这个页面将证书下载下来

我的证书 – SSL 证书 – 控制台 (tencent.com)

因为是要部署到Nginx服务器上,所以在这里我们下载证书的Nginx版本。

我们会一个文件压缩包,压缩包里有四个文件,分别以 csr\key\crt\pem结尾,这里我们只需要关注crt证书文件和key私钥文件拷贝到Nginx服务器的指定目录下。

步骤2

通过scp命令将证书文件传送到服务器上,这里需要将文件上传到服务器Nginx的配置文件ngnix.conf的同级目录下,根据个人安装情况来定,

可以用 nginx -t的命令查看配置文件的位置,结果里的 /etc/nginx/nginx.conf 就是你的配置文件的位置。

    root@315cebd73436:/# nginx -t
  nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
  nginx: configuration file /etc/nginx/nginx.conf test is successful
命令:
        示例:scp key文件地址 username@ip:/etc/nginx/
scp D:\xxx\xxx\xxx\xxx.key root@192.168.111.16:/etc/nginx/
        示例:scp crt文件地址 username@ip:/etc/nginx/
      scp D:\xxx\xxx\xxx\xxx.crt root@192.168.111.16:/etc/nginx/

步骤3

编写Nginx的配置文件。

命令:
    vi /etc/conf/nginx.conf

将以下代码加入到你的Nginx配置文件当中。

#请注意 Nginx 版本为 nginx/1.15.0 以上请使用 listen 443 ssl 代替 listen 443 和 ssl on

server {
    #SSL 默认访问端口号为 443
    listen 443 ssl;
    #请填写绑定证书的域名   注意
    server_name xxx.com
    #请填写证书文件的相对路径或绝对路径   注意
    ssl_certificate xxx.com_bundle.crt;
    #请填写私钥文件的相对路径或绝对路径     注意
    ssl_certificate_key xxx.com.key;
    ssl_session_timeout 5m;
    #请按照以下协议配置
    ssl_protocols TLSv1.2 TLSv1.3;
    #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
    location / {
        #网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
        #例如,您的网站主页在 Nginx 服务器的 /etc/www 目录下,则请修改 root 后面的 html 为 /etc/www。
        root html;
        index index.html index.htm;
    }
}

使用命令 nginx -t 查看配置文件是否有问题,如下这么显示代表你Nginx配置文件写的没问题,但是还是要注意检查一下域名有没有配置对。

root@315cebd73436:/# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

步骤4

执行以下命令重载Nginx

nginx -s reload

重载成功后,即可通过 https://你的域名 进行访问了!

HTTP 自动跳转 HTTPS 的安全配置

在nginx.conf文件中添加以下配置

    server {
    listen 80;
    #请填写绑定证书的域名
    server_name xxx.com;
    #把http的域名请求转成https
    return 301 https://$host$request_uri;
  }

完整配置文件

#请注意 Nginx 版本为 nginx/1.15.0 以上请使用 listen 443 ssl 代替 listen 443 和 ssl on

server {
    #SSL 默认访问端口号为 443
    listen 443 ssl;
    #请填写绑定证书的域名   注意
    server_name xxx.com
    #请填写证书文件的相对路径或绝对路径   注意
    ssl_certificate xxx.com_bundle.crt;
    #请填写私钥文件的相对路径或绝对路径     注意
    ssl_certificate_key xxx.com.key;
    ssl_session_timeout 5m;
    #请按照以下协议配置
    ssl_protocols TLSv1.2 TLSv1.3;
    #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
    location / {
        #网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
        #例如,您的网站主页在 Nginx 服务器的 /etc/www 目录下,则请修改 root 后面的 html 为 /etc/www。
        root html;
        index index.html index.htm;
    }
}

server {
    listen 80;
    #请填写绑定证书的域名
    server_name xxx.com;
    #把http的域名请求转成https
    return 301 https://$host$request_uri;
}

然后重复步骤4即可。

大功告成!

笔者出现的问题

问题

因为笔者是部署在docker下,编写Nginx脚本的时候,没有把证书和私钥文件到docker容器当中,导致Nginx启动失败。查看容器启动日志:

root@VM-4-14-ubuntu:/home/docker-compose$ docker logs 容器id
nginx: [emerg] cannot load certificate "/etc/nginx/xxx.xxx.crt": BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/etc/nginx/xxx.cn_bundle.crt','r') error:2006D080:BIO routines:BIO_new_file:no such file)

解决方法:

通过docker cp命令,将证书和私钥文件复制到Nginx容器内

root@VM-4-14-ubuntu:/home/docker-compose$ docker cp /home/docker/nginx/conf/xxx.cn.key  容器名称:/etc/nginx
Successfully copied 3.58kB to 315cebd73436_nginx:/etc/nginx
root@VM-4-14-ubuntu:/home/docker-compose$ docker cp /home/docker/nginx/conf/xxx.cn_bundle.crt 容器名称:/etc/nginx
Successfully copied 6.14kB to 315cebd73436_nginx:/etc/nginx

关闭容器,重启容器后就可以看到启动成功了。

其他可能出现的问题,这里附上腾讯云的链接,网站进不去的话可以参考一下:

无法使用 HTTPS 访问网站

部署 SSL 证书后,浏览器提示 “网站连接不安全”

访问站点提示连接不安全?

SSL 证书过期后重新申请部署依然提示 HTTPS 不安全?

在服务器上部署 SSL 证书后访问资源出现 404 报错

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇