在ubuntu上生成证书
第一种:安装 OpenSSL(如果没安装)
sudo apt update
sudo apt install openssl生成私钥(private key)
openssl genrsa -out domain.key 2048
这会生成一个 2048 位的私钥文件 domain.key。
openssl req -new -x509 -key domain.key -out domain.crt -days 365- new 新建证书请求
- x509 表示生成自签名证书(而非证书请求)
- key domain.key 指定私钥
- out domain.crt 证书文件名
- days 365 证书有效期 365 天
- 生成自签名证书(certificate)
执行时会提示填写一些信息,比如国家、组织、域名(Common Name,CN),域名填写你服务器的域名或 IP。
证书和私钥生成后文件
- domain.key:私钥(千万保管好,不要泄漏)
- domain.crt:自签名证书
验证证书信息(可选)
openssl x509 -in domain.crt -text -noout第二种:安装 Certbot 获取免费 SSL 证书(Let’s Encrypt)
假设已经有域名,例如 ssh.example.com,并且 DNS 已经解析到你的服务器 IP。
安装 Certbot:
sudo apt install certbot python3-certbot-nginx -y申请证书(自动配置 Nginx):
sudo certbot --nginx -d ssh.example.com执行时会让你选择:
- 输入邮箱
- 是否同意条款
- 是否把 HTTP 自动重定向到 HTTPS(建议选 Yes)
- 完成后,证书会自动配置到 /etc/nginx/sites-available/ 里。
安装nginx
sudo apt update
sudo apt install nginx -y
sudo systemctl status nginx
sudo systemctl start nginx 启动
sudo systemctl enable nginx对某个需要https的服务开启https
假设 sshwifty 在 Docker 中监听 8182 端口(你可以改成你实际端口),编辑 Nginx 配置:
sudo nano /etc/nginx/sites-available/sshwifty.conf写如如下模板:
server {
listen 80;
server_name ssh.example.com;
location / {
proxy_pass http://127.0.0.1:8182/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_read_timeout 36000s;
proxy_send_timeout 36000s;
}
}
server {
listen 443 ssl;
server_name ssh.example.com;
ssl_certificate /etc/letsencrypt/live/ssh.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ssh.example.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
proxy_pass http://127.0.0.1:8182/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_read_timeout 36000s;
proxy_send_timeout 36000s;
}
}
注意:server_name名必须一致,否则nginx会打开默认的欢迎页面
启用配置并重启 Nginx
sudo ln -s /etc/nginx/sites-available/sshwifty.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx签发33521.wang 的 SSL 证书
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d ssh.33521.wang作者:admin 创建时间:2025-08-12 15:44
最后编辑:admin 更新时间:2025-08-12 17:08
最后编辑:admin 更新时间:2025-08-12 17:08