申请ssl证书,即https有很多,有免费的,也有收费的。如第三方域名管理cloudflare也可自动添加使用https,而且永久。
但是电脑因为有些服务需要在服务器上使用自签证,所以需要自己申请。可免费使用certbot,也可以使用zeroSSL。
Cerbot参考我以前的文章:Certbot申请免费SSL证书
介绍使用acme.sh生成免费的ssl完全实现了证书acme协议,由纯Shell脚本语言编写,不太依赖,安装使用非常方便。
对于zerossl官方网站需要指出的是,用户可以直接在控制台申请证书,但免费用户最多只能申请3个证书ACME申请zeroSSL证书没有数量限制。
acme.sh官方gitlhub地址: https://github.com/acmesh-official/acme.sh
二:安装acme.sh安装过程不会污染任何功能和文件,所有修改仅限于安装目录:~/.acme.sh/。
把 my@example.com 修改成自己的邮箱。
1.在线安装方式
安装简单, 一个命令:
curl https://get.acme.sh | sh -s email=my@example.com
或者
wget -O - https://get.acme.sh | sh -s email=my@example.com
这里的-s指定参数的邮箱可以与现有参数相关联zeroSSL账号。关联成功后,通过acme.sh生成的zeroSSL证书会在zeroSSL显示在网站的控制面板上。
2.其他安装方法
用git仓库方式
git clone https://github.com/acmesh-official/acme.sh.gitcd ./acme.sh./acme.sh 电脑 --install -m my@example.com
安装完成后,在账号home生成一个目录.acme.sh隐藏目录。
三、颁发证书注:安装完成后,您需要退出当前的命令终端并重新登录acme.sh命令
我的网站域名已经在这里了 test.ywbj.cc 做为测试。
配置nginx
server{ listen 80; server_name test.ywbj.cc; root /www/test.ywbj.cc; location /{ index index.html index.htm index.php; }}
配置域名目录/www/test.ywbj.cc,在此目录中创建一个index.html测试文件,然后重启nginx。
配置完成后,打开浏览器test.ywbj.cc,域名提示不安全,不安全https.
1:http将证书颁发给域名
一般都是这样。
配置完成后,打开浏览器test.ywbj.cc,域名提示不安全,不安全https.
1:http将证书颁发给域名
一般来说,就是这样。如果没有服务器,请使用dns手动。单个域名电脑acme.sh --issue -d test.ywbj.cc -w /www/test.ywbj.cc-d 域名需要签证。
-w参数说明:具体来说,在验证域名所有权时,acme.sh它将在网站的根目录下创建.well-known然后在其中生成验证文件。因此,-w参数指定的路径实际上在域名下,/.well-known位置对应的路径。使用和验证这个域名属于你。
下图显示证书已成功颁发。
若有多个域名,同一证书中的多个域。acme.sh --issue -d example.com -d www.example.com -d cp.example.com -w /home/wwwroot/example.com证书生成后,将放置在~//.acme.sh/example.com/
每60天自动更新一次证书。
以下是我在这里展示的test.ywbj.cc的目录下。
2:手动 dns 颁发证书的方式
手动 dns 方式, 在域名上手动添加一个 txt 解析记录, 验证域名所有权.这种方法的优点是, 您不需要任何服务器, 不需要任何公网 ip, 只需要 dns 验证可以完成分析记录. 坏处是,若配置不同 Automatic DNS API,用这种方法 acme.sh 不能自动更新证书,每次都需要手动重新分析验证域名所有权。
acme.sh --issue --dns -d mydomain.com \\--yes-I-know-dns-manual-mode-enough-go-ahead-please
然后, acme.sh 显示相应的分析记录, 您只需将此添加到您的域名管理面板中 txt 记录即可.等待分析完成后, 重生证书:acme.sh --renew -d mydomain.com \\--yes-I-know-dns-manual-mode-enough-go-ahead-please
dns 该方法的真正强大之处在于域名分析师提供的可用性 api 自动添加 txt 完成记录验证.acme.sh 目前支持 cloudflare, dnspod, cloudxns, godaddy 以及 ovh 等数十个分析师的自动集成.四、安装证书 Apache/Nginx 等
1,nginx
acme.sh --install-cert -d test.ywbj.cc \\--key-file /etc/nginx/ssl//key.pem \\--fullchain-file /etc/nginx/ssl/cert.pem \\--reloadcmd "service nginx force-reload"
如果是apache的话,可以使用以下命令
acme.sh --install-cert -d example.com \\--cert-file /path/to/certfile/in/apache/cert.pem \\--key-file /path/to/keyfile/in/apache/key.pem \\--fullchain-file /path/to/fullchain/certfile/apache/fullchain.pem \\--reloadcmd "service apache2 force-reload"
更改nginx配置文件,加上443端口的监控和配置ssl_certificate和ssl_certificate_key到指定目录。
server{ #listen 80; listen 443; server_name test.ywbj.cc; root /www/test.ywbj.cc; ssl_certificate /etc/nginx/ssl/cert.pem; ssl_certificate_key /etc/nginx/ssl/key.pem; location /{ index index.html index.htm index.php; }}重启nginx,再次输入浏览器https://test.ywbj.cc/,可见已成功。
查看详细信息,可以看到是ZeroSSL证书有效期为3个月。查看详细信息,可以看到是ZeroSSL证书有效期为3个月。
安装证书时,已自动安装crontab定时任务增加任务。
crontan -l查看定时任务,可以看到acme.sh定时任务。crontan -l2 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null
到这里,nginx的ssl自签证书已经完成。
六:acme.sh其他命令(扩展)
1:查看安装证书信息acme.sh --info -d example.com# 输出以下内容:DOMAIN_CONF=/root/.acme.sh/example.com/example.com.confLe_Domain=example.comLe_Alt=noLe_Webroot=dns_aliLe_PreHook=Le_PostHook=Le_RenewHook=Le_API=https://acme-v02.api.letsencrypt.org/directoryLe_Keylength=Le_OrderFinalize=https://acme-v02.api.letsencrypt.org/acme/finalize/23xxxx150/781xxxx4310Le_LinkOrder=https://acme-v02.api.letsencrypt.org/acme/order/233xxx150/781xxxx4310Le_LinkCert=https://acme-v02.api.letsencrypt.org/acme/cert/04cbd28xxxxxx349ecaea8d07Le_CertCreateTime=1649358725Le_CertCreateTimeStr=Thu Apr 7 19:12:05 UTC 2022Le_NextRenewTimeStr=Mon Jun 6 19:12:05 UTC 2022Le_NextRenewTime=1654456325Le_RealCertPath=Le_RealCACertPath=Le_RealKeyPath=/etc/acme/example.com/privkey.pemLe_ReloadCmd=service nginx force-reloadLe_RealFullChainPath=/etc/acme/example.com/chain.pem
2:更新 acme.sh
#升级 acme.sh 到最新版 :acme.sh --u
pg
电脑