生成 *.bocloud.local SSL证书完整指南
使用 OpenSSL
1. 生成私钥
openssl genrsa -out bocloud.local.key 2048
2. 创建证书配置文件
创建文件 bocloud.local.conf
:
[req]
default_bits = 2048
prompt = no
default_md = sha256
distinguished_name = dn
req_extensions = v3_req
[dn]
C=CN
ST=Beijing
L=Beijing
O=Bocloud Local Development
OU=IT Department
CN=*.bocloud.local
[v3_req]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = *.bocloud.local
DNS.2 = bocloud.local
DNS.3 = localhost
DNS.4 = *.localhost
IP.1 = 127.0.0.1
IP.2 = ::1
3. 生成证书签名请求 (CSR)
openssl req -new -key bocloud.local.key -out bocloud.local.csr -config bocloud.local.conf
4. 生成自签名证书
openssl x509 -req -in bocloud.local.csr -signkey bocloud.local.key -out bocloud.local.crt -days 365 -extensions v3_req -extfile bocloud.local.conf
5. 查看证书信息
openssl x509 -in bocloud.local.crt -text -noout
安装和使用证书
在系统中信任证书
Windows:
- 双击
.crt
文件 - 点击"安装证书"
- 选择"本地计算机"
- 选择"将所有证书放入下列存储" -> "受信任的根证书颁发机构"
macOS:
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain bocloud.local.crt
Linux (Ubuntu/Debian):
sudo cp bocloud.local.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates
在浏览器中使用
Chrome/Edge:
- 设置 -> 隐私和安全 -> 安全 -> 管理证书
- 导入证书到"受信任的根证书颁发机构"
Firefox:
- 设置 -> 隐私与安全 -> 证书 -> 查看证书
- 导入证书
Web服务器配置示例
Nginx:
server {
listen 443 ssl;
server_name *.bocloud.local;
ssl_certificate /path/to/bocloud.local.crt;
ssl_certificate_key /path/to/bocloud.local.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
# 你的配置
}
}
Apache:
<VirtualHost *:443>
ServerName *.bocloud.local
DocumentRoot /path/to/your/site
SSLEngine on
SSLCertificateFile /path/to/bocloud.local.crt
SSLCertificateKeyFile /path/to/bocloud.local.key
SSLProtocol TLSv1.2 TLSv1.3
SSLCipherSuite HIGH:!aNULL:!MD5
</VirtualHost>
Node.js Express:
const https = require('https');
const express = require('express');
const fs = require('fs');
const app = express();
const options = {
key: fs.readFileSync('bocloud.local.key'),
cert: fs.readFileSync('bocloud.local.crt')
};
https.createServer(options, app).listen(443, () => {
console.log('HTTPS Server running on https://app.bocloud.local');
});
Docker Compose:
version: '3.8'
services:
web:
image: nginx
ports:
- "443:443"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- ./bocloud.local.crt:/etc/ssl/certs/bocloud.local.crt
- ./bocloud.local.key:/etc/ssl/private/bocloud.local.key
验证证书
使用 OpenSSL 验证
openssl x509 -in bocloud.local.crt -text -noout | grep -A 1 "Subject Alternative Name"
使用 curl 测试
curl -v https://app.bocloud.local --cacert bocloud.local.crt
使用浏览器测试
访问 https://app.bocloud.local
确保没有SSL警告。
注意事项
- 有效期: 证书默认有效期为365天,可以根据需要调整
- 私钥安全: 请妥善保管私钥文件,不要提交到版本控制系统
- 域名匹配: 通配符证书
*.bocloud.local
只匹配一级子域名 - 浏览器兼容性: 确保浏览器信任自签名证书
- 自动化: 可以将证书生成过程集成到开发环境的启动脚本中
故障排除
常见错误:
NET::ERR_CERT_AUTHORITY_INVALID
: 证书未被信任,需要安装到系统信任存储NET::ERR_CERT_COMMON_NAME_INVALID
: 域名不匹配,检查SAN扩展ERR_SSL_VERSION_OR_CIPHER_MISMATCH
: SSL配置问题,检查服务器SSL设置
解决方案:
- 确保证书已正确安装到系统信任存储
- 验证DNS指向正确(添加到 /etc/hosts)
- 检查服务器SSL配置
- 使用现代SSL协议和密码套件