简单模式,在nginx中安装https的ssl证书

简单模式,在nginx中安装https的ssl证书

自我感觉,各类web服务中,nginx安装第三方证书是最简单的。

因为现在申请免费证书的方案很多,所以,就只是简单讲解一下证书的安装,至少能够满足微信小程序的https访问要求。

如何获得免费的ssl证书?

免费ssl证书,自2015年,let's encrypt推出免费证书后,市场上开始踊跃出多类免费的ssl证书。

let's encrypt的证书安装,有动手能力的同学,可以前往acme.sh安装方案;也可以查看我的另一篇文章《折腾Let's Encrypt免费通配符证书的自动更新》。

偷懒的方案,去阿里云申请免费证书。(类似腾讯云这些服务商都有提供)

一般都是赛门铁克单域名,一年版。


既然是简单模式……就以阿里云为例,多写一个证书申请方式。

注意了,如果是使用amh、宝塔等web面板的小小白级用户,可能不太适合这个。

安装前,你要准备好什么?

1、一台已经装好nginx的服务器,你能找到conf配置文件;

2、一个准备申请证书的可解析域名;

3、一个阿里云的账号;从这里去阿里云

4、具备简单的写代码能力,至少会使用notepad++ 或类似工具编辑内容;

以上四条,少了一条……就拉倒吧,别玩了,花钱找人弄吧。 


进入阿里云,在导航栏的产品中,找到【安全】>【SSL证书】,立即购买,选择【免费型DV SSL】。

然后下单购买,不花钱就搞定了。

进入控制台,找到【SSL证书管理控制台】

有一条未签发证书,点击【申请】

弹出侧面弹窗,填写绑定域名等信息;

所在地、申请人等信息,就自己看着填就行了。

证书绑定域名填写方式:(划重点,考试要用的,同学)

如果你要申请www.inull.cn的证书,填写inull.cn,系统默认一起签发www.inull.cn;

如果你要申请static.inull.cn的证书,就填写static.inull.cn即可。

域名验证方式:

自动DNS验证,如果域名在阿里云注册,且同账号下的,请选择此项便于操作;

手工DNS验证,如果域名不在阿里云,或者不在同账号下,请选择此项;*需要你有配置域名解析的能力,根据阿里云提供的帮助内容,已经很简单了。

文件验证,如果域名可以访问,你还能配置访问,你可以选这项;*对于多数不用php的小白来说,可能会是灾难级的操作难度。。。

CSR生成方式:请选系统生成,谢谢;

填完,下一步。


自动DNS验证的,点一下验证就行了;

手工DNS验证的,需要等待解析生效,通常会1分钟到24小时不等;*惊不惊喜,意不意外?

文件验证的,高手自己玩吧。

验证成功,提交审核,等待证书签发。

通常情况下,是没有邮件……没有电话……就等着签发证书就行了。。。

一般等待10分钟左右。

下载证书,解压,推荐将证书密钥文件重名为域名+后缀;

例如:static.inull.cn.pem和static.inull.cn.key;

把证书文件上传到你服务器。


找到你的网站conf配置文件,使用编辑器打开:

其实怎么讲解conf都没有用的,参照下列配置,安装证书

server {
    #--- SSL证书的安装与配置开始 ---
    # 监听443端口
    listen 443 ssl;
    # ssl开启
    ssl on;
    # 监听域名
    server_name                 static.inull.cn;
    # 加入证书 -> 证书路径
    ssl_certificate             /home/ssl/static.inull.cn/static.inull.cn.pem;
    ssl_certificate_key         /home/ssl/static.inull.cn/static.inull.cn.key;
    # ssl证书启用配置
    ssl_ciphers                 EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256::!MD5;
    ssl_protocols               TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers   on;
    ssl_session_cache           shared:SSL:10m;
    ssl_session_timeout         1d;
    ssl_session_tickets         on;
    #--- SSL证书的安装与配置结束 ---
    
    # 以下内容不一定参照,这是一个NodeJS使用Nignx代理的案例->不限于NodeJS
    # 开始处理/路径 
    location / {
        # 加入HSTS 浏览器会把http强制转到https
        add_header              Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";
        # 安全配置选项
        add_header              X-Content-Type-Options nosniff;
        # 禁止缓存->选用
        add_header              Cache-Control no-cache;
        
        # 代理配置
        proxy_ignore_headers    Set-Cookie;

        proxy_hide_header       Vary;
        proxy_hide_header       X-Powered-By;
        
        proxy_set_header        Connection       "";
        proxy_set_header        Host             $host; # 主机名->https://static.inull.cn
        proxy_set_header        X-Real_IP        $remote_addr; # 代理IP
        proxy_set_header        X-Forwarded-For  $proxy_add_x_forwarded_for;

        # NodeJS的访问地址
        proxy_pass              http://127.0.0.1:3000;
    }
    
    access_log                  /home/wwwlogs/static.inull.cn.log;
}

server {
    listen 80;
    server_name                 static.inull.cn;
    location / {
        add_header              Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";
        rewrite                 ^/(.*)$ https://static.inull.cn/$1 permanent;
    }
}

保存配置以后,记得运行一次nginx -t检查配置文件是否正常;

如果检查成功,service nginx reload;

如果reload失败,重启nginx服务也行。


关于前端从业者,不太会安装在服务器上安装nginx服务,推荐查看屈屈的文章:

https://imququ.com/post/my-nginx-conf.html