SSL 免费证书

 SSL 免费证书

参考:

查看证书时间的方式

https://blog.csdn.net/qq_38978882/article/details/133773102

用 Let's encrpyt 生成 SSL 证书

更新:为 NGINX 配置免费的 Let’s Encrypt SSL/TLS 证书

https://zhuanlan.zhihu.com/p/562040010

使用let's encrypt申请免费的SSL证书

https://developer.aliyun.com/article/1246358

Let's Encrypt 安装配置教程,免费的 SSL 证书

https://zhuanlan.zhihu.com/p/196638669

你的网站HTTPS了吗 | Let’s Encrypt

https://www.manongjc.com/detail/51-xziwpgoulyigshr.html

Let‘s Encrypt免费安全证书的步骤及使用-基于centos9, 包括工具certbot安装及使用,获取apache、nginx、iis等服务器安全证书

https://blog.csdn.net/zrc_xiaoguo/article/details/134847692

ACME通过dns验证申请Let’s Encrypt免费ssl证书

https://cloud.tencent.com/developer/article/2393094

深入浅出 SSL/CA 证书及其相关证书文件(pem、crt、cer、key、csr)

https://blog.csdn.net/crown_0726/article/details/129854566

 

一、查看证书信息

先可以查看一下现在证书时间:

可以直接用 curl 查看,输出会包含证书信息:

curl -k https://domain.com -iv

1、openssl 查看

openssl pkcs12 -in name.p12 -out name.crt
openssl x509 -in name.crt -noout -text

2、方式2

将证书从.p12文件解压缩到.pem文件,使用以下命令:

openssl pkcs12 -in name.p12 -out name.pem -nodes

使用以下命令从.pem文件中的证书中提取到期日期:

cat name.pem | openssl x509 -noout -enddate

3、命令查看时间

openssl pkcs12 -in name-prd.p12 -nodes | openssl x509 -noout -enddate

 

二、证书格式

从分类标准上分,SSL 证书格式主要有

  • 公钥证书格式标准 X.509 中定义的 PEM 和 DER
  • 公钥加密标准 PKCS 中定义的 PKCS#7 和 PKCS#12
  • Java环境专用的 JKS

从文件格式上分,SSL 证书格式主要有:

  1. 一种是 Base64 (ASCII) 编码的文本格式。这种证书文件是可以通过文本编辑器打开,甚至进行编辑,常见有 PEM 证书格式,扩展名包括 PEM、CRT 和 KEY。
  2. 另外一种是 Binary 二进制文件。常见有 DER 证书格式,扩展名包括 DER 和 CER。

Linux 系统使用 CRT,Windows 系统使用 CER。

 

文件类型:

  • X.509:一种通用的证书格式,包含证书持有人的公钥,加加密算法等信息
  • pkcs1:~pkcs12 公钥加密(非对称加密)的一种标准(Public Key Cryptography Standards),一般存储为 .pN,,.p12 是包含证书和密的封装格式
  • *.der:证书的二进制存储格式(不常用)
  • *.pem:证书或密钥的 Base64 文本存储格式,可以单独存放证书或密钥,也可以同时存放证书或密钥
  • *.key:单独存放的 pem 格式的密钥,一般保存为 *.key
  • *.cer:*.crt 两个指的都是证书,Linux 下叫 crt,Windows 下叫 cer;存储格式可以是 pem,也可以是 der
  • *.csr:证书签名请求(Certificate signing request),包含证书持有人的信息,如:国家,邮件,域名等信息
  • *.pfx:微软 IIS 的实现
  • *.jks:Java 的 keytool 实现的证书格式

 

三、用 Let's encrpyt 生成 SSL 证书:

Let's Encrypt 入门指南
https://letsencrypt.org/zh-cn/getting-started/

Let’s Encrypt 使用 ACME 协议,ACME 客户端

https://letsencrypt.org/zh-cn/docs/client-options/

Let's Encrypt ACME 地址如下:

https://acme-v02.api.letsencrypt.org/directory

 

acme.sh 我用的是这个工具,dns验证

https://github.com/acmesh-official/acme.sh

 

此页面第4类验证 80 端口单机验证

4. Use Standalone server to issue cert

(requires you to be root/sudoer or have permission to listen on port 80 (TCP))

Port 80 (TCP) MUST be free to listen on, otherwise you will be prompted to free it and try again.

acme.sh --issue --standalone -d example.com -d www.example.com -d cp.example.com

此页面第九类验证 DNS 验证:
9. Use DNS manual mode:
See: https://github.com/acmesh-official/acme.sh/wiki/dns-manual-mode first.

80端口验证

https://github.com/acmesh-official/acme.sh/wiki/sudo

DNS manual mode 验证步骤
https://github.com/acmesh-official/acme.sh/wiki/dns-manual-mode

用 git 安装

git clone https://github.com/acmesh-official/acme.sh.git
cd ./acme.sh
./acme.sh --install -m my@example.com

 

注:acme现在默认申请的是ZeroSSL,但是ZeroSSL不太稳定,所以换成letsencrypt家的。

acme.sh --set-default-ca  --server  letsencrypt

上面是看到网上资料,也没太没注意,我用的是默认的。

 

四、80端口验证

注意需要 root 用户,sudo su.

#uninstall for current user
acme.sh --uninstall

#change to root
sudo su

#install again for root user
curl https://get.acme.sh | sh -s email=my@example.com

#use it
bash
acme.sh --issue -d --standalone -d test-api.bbphone.net

生成证书执行过程中可能出现以下几个问题:

1、socat工具。

 安装下这个 socat 网络工具就行

sudo apt install socat

2、端口提示被占用

 停止一下 nginx 服务在验证。

sudo service nginx stop

成功生成证书:

 

五、DNS 验证

ip 端口验证比较简单,但因为一些特殊情况不方便端口验证,用 DNS 验证:

1. First step:

acme.sh --issue -d example.com --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please

2. Please add the TXT record to your DNS records. This step is required every time you renew your certificate.
With DNS api mode, this step can be automated.

大概意思,将第一步命令执行结果的 zhi 解析一下,域名解析添加 TXT 记录。

规律是:_acme-challenge. 加上域名。

比如

  • xxx.com:_acme-challenge.xxx.com
  • child.xxx.com:_acme-challenge.child.xxx.com

3. Now retry with --renew command.

acme.sh --renew -d example.com --yes-I-know-dns-manual-mode-enough-go-ahead-please

都是官网查询到的,百度搜了很多资料不好用,尽量还是去官网查询。

 

六、自动续签

自动续签配置 cron 命令,后面再记录。

 

posted @ 2024-05-07 15:44  fieldtianye  阅读(87)  评论(0编辑  收藏  举报