为没有域名的 IP 申请一个 SSL 证书

〔2023年6月13日更新〕提供服务的 HiCA 在开始提供收费服务后不久(?),宣称:”出于安全事故考虑,HiCA选择在 2023 年 6 月 6 日停止所有服务。所有已签发证书请立即切换到其他 CA 的产品。由此带来不便我们给所有用户表示深深的抱歉。江湖路远,也许我们会再次见面的…”
相关事件讨论:https://github.com/acmesh-official/acme.sh/issues/4659
因此,请忘记本文吧。

基本情况介绍省略一千字…..直接上手:

0 部署 Web 服务器

我喜欢用 Nginx,所以只提供 Ubuntu 系统下的 Nginx 部署方法,有其他癖好者,请自行探索 Web 服务器的部署方法。

sudo apt update
sudo apt install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx

部署完成后,Web 服务器的默认目录为:

/var/www/html

保险起见,你们也可以自行检查 Web 服务器路径。

1 部署 acme.sh 项目

参考 acme.sh 项目

sudo curl  https://get.acme.sh | sh
alias acme.sh=~/.acme.sh/acme.sh
acme.sh --upgrade --auto-upgrade

2 指定证书源(ZeroSSL)并注册帐号

自行替换代码中的 “myemail@gmail.com” 为个人电子邮箱地址。

acme.sh --set-default-ca --server zerossl
acme.sh --register-account -m myemail@gmail.com

3 申请指定 IP 的 SSL 证书

假设需要申请 SSL 证书的 IP 是:1.1.1.1。你们需要自行替换。

acme.sh --issue -d 1.1.1.1 --webroot /var/www/html --server https://acme.hi.cn/directory

4 将申请到的 SSL 证书复制到指定路径

先新建一个路径:

sudo mkdir /var/www/ssl

复制 fullchain 及 key 文件到指定路径,记得替换正确的 IP:

acme.sh --install-cert -d 1.1.1.1 --key-file /var/www/ssl/1.1.1.1.key --fullchain-file /var/www/ssl/fullchain.crt --reloadcmd "service nginx force-reload"

无脑赋权 777 一波:

sudo chmod -R 777 /var/www/ssl

5 为 Nginx 写个简单的配置来测试一下

在 /etc/nginx/conf.d 下新建一个 *.conf 文件,文件名随意,写入以下内容(记得更换正确的 key 名称):

server {
        listen       80;
        server_name  localhost;
}
server {
	listen    443 ssl http2;
        server_name  localhost;
	root /var/www/html;  
	ssl_certificate /var/www/ssl/fullchain.crt;
	ssl_certificate_key /var/www/ssl/1.1.1.1.key;
	ssl_protocols TLSv1.2 TLSv1.3;
	ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
	client_header_timeout 52w;
        keepalive_timeout 52w;
	location / {     
  		root /var/www/html; 
		index index.html;
	}
}

重新加载 Nginx 服务:

sudo systemctl reload nginx

访问 IP 地址试试看(自行替换正确的 IP):

https://1.1.1.1

小锁开出来了,有木有?

发表评论