免费的泛域名证书

当我们的服务要使用域名并使用https访问访问时,证书的重要性就体现出来了,毕竟谁也不想浏览器访问域名时出现红色❌吧,而且对接微信小程序开发时,一个正规的https证书也是必需的。

下面将介绍生成证书有两种方式:

  • Openssl生成
  • LetsEncrypt生成

1. LetsEncrypt生成

这个网站比较慢,且普通用户只能使用共享通道,要排队; 推荐的证书有效期只有三个月,到期记得重新申请,不然服务就GG了;

申请地址:https://letsencrypt.osfipin.com/
注册登陆后会有填写域名的过程,建议勾选泛域名和根域名,毕竟免费,多勾选几个也不坏[doge]
然后就是验证了,提供两种验证方式,DNS和HTTP;

  • DNS:

DNS方式需要进入域名提供商的控制台,配置DNS的前缀和解析值为LetsEncrypt提供给你的值,修改后等十几分钟让DNS刷新,然后回到LetsEncrypt再执行验证操作,免费账户会排队等待,耐心等待验证通过即可
以下为腾讯云配置示例,xxxxxxxxxxxxxx替换为解析值
|主机记录|记录类型|线路类型|记录值|权重|优先级|TTL|最后操作时间|操作|
|-------|-------|-------|-------|-------|-------|-------|-------|-------|
|_acme-challenge|TXT|默认|xxxxxxxxxxxxxx| - | - |600|2022-12-01 00:00:00| |

  • HTTP:

http方式更简单,适合公司域名,但是开发和运维人员无权限修改DNS的情况
需要配合web服务器使用,因为该方式LetsEncrypt会给你一个文件和一个访问地址(你域名下的一个随机地址),访问该地址能显示文件的内容即可
我这里使用的是nginx,配置文件如下,在conf.d文件夹里

server {
  listen 80;
  server_name 【LetsEncrypt提供地址的域名】;

  # 用作证书校验
  location /.well-known/acme-challenge/ {
    # LetsEncrypt提供的文件我放在/usr/share/nginx/html/letsencrypt/下
    alias /usr/share/nginx/html/letsencrypt/;
    # 只显示文件内容不下载
    default_type text/plain;
    autoindex on;
    autoindex_exact_size off;
    autoindex_localtime on;
  }
}

配置完成后重启nginx服务即可

2. Openssl自签证书(浏览器不认,微信小程序也不认)

2.1 参看openssl是否安装,centos一般默认安装好了

openssl version

2.2 生成私钥

openssl genrsa -des3 -out server.pass.key 2048

输入两次四位以上密码即可

2.3 去除私钥密码

openssl rsa -in server.pass.key -out server.key

上述操作会生成两个文件server.key(无密码的私钥文件)server.pass.key (有密码的私钥文件)

2.3 生成CSR文件

openssl req -new -key server.key -out server.csr -subj "/C=CN/ST=Ningbo/L=Zhejiang/O=dep/OU=dep/CN=www.iwiki.ink"

2.4 生成自签名证书

# -days:证书有效天数
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt

此时文件夹共有

  • server.crt(自签名SSL证书)
  • server.csr(签名文件)
  • server.key(无密码的私钥文件)
  • server.pass.key(有密码的私钥文件)
    将 server.crt 和server.key放进nginx中配置即可

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×