ssl证书怎么申请(申请永久免费的HTTPS证书)

我不是高手,我只是一个普通的程序员,我特别愿意大家留言讨论,批评指正,您给我指正了,我就去查资料,去做实验,我技术就能得到提高,我认为这是一个程序员的基本素养。

随着互联网安全越来越被重视,几乎所有的大网站都已经默认启用了https协议,浏览器输入http网址也会自动跳转到https,比如百度、腾讯、搜狗、谷歌等等。简单来说就是https协议数据更加安全,只有收发双方通过加密解密算法才能知道数据,中间人拦截到的都是加密后的,没有密钥是无法解密的。

一个https的加密解密过程会用到两种算法:

1,非对称加密RSA:

私钥加密,公钥解密。公钥加密,私钥解密。就是说一共俩密钥,收发双方,各有一个。

非对称加密可以加密的数据量比较小,用来把第二步要用到的对称加密的密钥进行加密解密。

2,对称加密:使用同一个密钥,用来加密解密。通过第一步的公钥,解出来对称加密的密钥,用这个密钥对传输数据加密,服务器端解密。

现在微信小程序,IOS开发等很多地方都要求接口必须是https的。所以我整理一个免费获取https证书的步骤:

首先,你要有一个域名,域名现在也很便宜,有一个linux服务器。这些某某云都能买到。

linux以centos为例,其他的也都类似。安装nginx(这个不解释,如果这个也不知道是啥,就肯定也不会去申请https)。

然后免费https证书提供商最著名的https://letsencrypt.org/

申请永久免费的HTTPS证书

点击Get Started按钮

申请永久免费的HTTPS证书

看红色框标记处,这里会用到另外一个网站Certbot。

letsencrypt网站是提供https证书,certbot网站是提供一个自动化工具,强烈推荐使用,这个工具可以自动解析nginx配置文件,并把证书下载下来,然后自动修改nginx配置文件里的https配置,最重要的是letsencrypt的免费证书是3个月有效期,certbot工具可以到期帮你自己更新证书,免去了你自己忘了重新申请证书,造成https证书过期。

ssh到linux以后,执行yum install certbot python3-certbot-nginx,如果不是root用户登录,执行sudo yum install certbot python3-certbot-nginx。如果是python版本很低,或者yum库里的cerbot版本是基于python2的,那么certbot的nginx插件是python2的命令就改为yum install certbot python2-certbot-nginx即可

在nginx中配置好域名

server {
        listen       80;
        server_name  www.*****.com; #自己的域名 
        root         /usr/share/nginx/html;
        include /etc/nginx/default.d/*.conf;

        location / {
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

然后执行certbot –nginx,非root用户执行sudo certbot –nginx

申请永久免费的HTTPS证书

按照步骤填写邮箱,然后yes yes,就会自动读取你本地的nginx的配置了,会列出来本地的所有的nginx里配置的域名,然后根据自己的情况填写域名序号就行了,比如我这个就填1就是第一条域名

稍等片刻,申请成功,密钥文件的路径都会在提示里显示出来。

申请永久免费的HTTPS证书

再次打开nginx的配置文件,发现里面的变化,主要是做了两部分工作,第一把原来的域名改为了443端口,https,配置上证书路径,第二部分,80端口监听自动跳转到https

server {
        server_name  www.***.com;
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/xiaochengxu.txcf77.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/xiaochengxu.txcf77.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}
server {
    if ($host = www.***.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


        listen       80;
        server_name  xiaochengxu.txcf77.com;
    return 404; # managed by Certbot
}

执行nginx -s reload,重新加载nginx配置文件。

输入原来的http://www.***.com域名,自动跳转到https,并且旁边提示一个小锁,说明正常跳转了https,大功告成!

申请永久免费的HTTPS证书

查看证书信息,可看到证书有效期只有3个月。

申请永久免费的HTTPS证书

下面我们看看怎么实现自动更新证书,首先certbot renew命令是用来更新证书的,如下图所示,命令会判断当前证书是否到期,如果没到期是不会更新的,有了这个自动判断功能就好办了。

申请永久免费的HTTPS证书

echo "0 0,12 * * * root python3 -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew -q" | sudo tee -a /etc/crontab > /dev/null

执行命令,稍微懂点python的都能看懂,这是做了一个定时任务的脚本,每天的0点和12点会运行脚本,来执行certbot renew来更新证书,一劳永逸了。

还有记得先看起系统的crond服务是否启动了。

systemctl status crond 查看定时服务状态

systemctl start crond 启动服务

systemctl enabel crond 把定时服务添加到开机自启动

申请永久免费的HTTPS证书

至此你已经拥有了自己的永久免费的https了。

站长微信:yqq8233(长安复制)公众号:vzyun222