在内网环境下签发浏览器认可的 HTTPS 证书
1. 选择证书颁发机构 (CA)
在内网环境中,可以选择以下两种方式来创建和使用 HTTPS 证书:
- 自签名证书 :适用于测试或开发环境,但浏览器会提示不安全。
- 内部 CA:可以自己搭建一个证书颁发机构,签发证书并让浏览器信任。
2. 搭建内部 CA
如果您选择使用内部 CA,可以按照以下步骤操作:
1. 创建 CA 证书
使用 OpenSSL 创建 CA 证书和私钥:
# 创建私钥
openssl genrsa -out ca.key 2048
# 创建自签名 CA 证书
openssl req -x509 -new -nodes -key ca.key -sha256 -days 1024 -out ca.crt
2. 签发证书
为您的域名(例如 *.lan
)创建证书请求并签发证书:
# 创建私钥
openssl genrsa -out wildcard.lan.key 2048
# 创建证书签名请求 (CSR)
openssl req -new -key wildcard.lan.key -out wildcard.lan.csr
# 使用 CA 签发证书
openssl x509 -req -in wildcard.lan.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out wildcard.lan.crt -days 500 -sha256 -extfile <(printf "subjectAltName=DNS:*.lan")
3. 安装 CA 证书
为了使浏览器信任您签发的证书,您需要将 CA 证书安装到浏览器或操作系统中:
- Windows: 将
ca.crt
导入到“受信任的根证书颁发机构”中。 - macOS: 使用“钥匙串访问”将 CA 证书添加到“系统”钥匙串并设置为信任。
- Linux: 将 CA 证书放入
/usr/local/share/ca-certificates/
目录,并运行update-ca-certificates
。
4. 配置 Web 服务器
将生成的证书和私钥配置到您的 Web 服务器中(如 Nginx、Apache 等)。
例如,在 Nginx 中的配置示例:
nginx
server {
listen 443 ssl;
server_name *.lan;
ssl_certificate /path/to/wildcard.lan.crt;
ssl_certificate_key /path/to/wildcard.lan.key;
# 其他配置...
}