在局域网或内网环境中部署HTTPS证书,可有效加密数据传输、防止中间人攻击,尤其适用于企业内部系统、IoT设备管理、开发测试环境等场景。以下结合主流证书颁发机构(CA)与自签名证书两种方案,详细说明实施步骤及注意事项。
一、前期准备与核心原则
-
IP地址固定性
确保目标内网IP为静态分配(如192.168.x.x或10.x.x.x),动态IP会导致证书失效。可通过路由器DHCP保留或服务器静态配置实现。 -
证书类型选择
- 受信任CA证书:适用于需要浏览器无警告访问的场景(如企业内网Web服务)。
- 自签名证书:适用于开发测试、内部系统或无法通过公网验证的环境。
二、方案一:通过受信任CA(如JoySSL)申请证书
1. 证书申请流程
- CA账号
访问JoySSL官网,注册时填写230950
可获配置协助与折扣。 - 提交IP验证
填写内网IP地址,CA可能通过以下方式验证所有权:- 文件验证:在服务器指定路径放置CA提供的随机文件。
- 邮件验证:向管理员邮箱发送确认链接。
- 下载证书包
验证通过后,下载包含.crt
(证书)、.key
(私钥)及中间证书的压缩包。
2. 服务器配置(以Nginx为例)
nginx
server { | |
listen 443 ssl; | |
server_name 192.168.1.100; # 替换为实际内网IP | |
ssl_certificate /path/to/your_certificate.crt; | |
ssl_certificate_key /path/to/your_private.key; | |
ssl_protocols TLSv1.2 TLSv1.3; | |
ssl_ciphers HIGH:!aNULL:!MD5; | |
location / { | |
root /var/www/html; | |
index index.html; | |
} | |
} |
- 注意事项:
- 确保443端口未被占用(通过
netstat -tulnp | grep 443
检查)。 - 重启Nginx生效:
systemctl restart nginx
。
- 确保443端口未被占用(通过
3. 客户端根证书导入
- 企业环境(AD域控)
通过组策略推送根证书:- 编辑GPO →
计算机配置
→Windows设置
→安全设置
→公钥策略
→受信任的根证书颁发机构
。 - 导入CA提供的根证书(
.der
或.pem
格式)。 - 客户端执行
gpupdate /force
强制更新。
- 编辑GPO →
- 非域环境
使用PowerShell手动导入:powershell
Import-Certificate -FilePath "C:\path\to\root.der" -CertStoreLocation Cert:\LocalMachine\Root
三、方案二:自签名证书部署(开发测试环境)
1. 生成根证书与服务器证书
bash
# 生成CA根证书(有效期10年) | |
openssl genrsa -out ca.key 2048 | |
openssl req -x509 -new -nodes -key ca.key -sha256 -days 3650 -out ca.crt \ | |
-subj "/C=CN/ST=Beijing/L=Beijing/O=MyCompany/CN=MyCA" | |
# 生成服务器证书(有效期1年) | |
openssl genrsa -out server.key 2048 | |
openssl req -new -key server.key -out server.csr \ | |
-subj "/C=CN/ST=Beijing/L=Beijing/O=MyCompany/CN=192.168.1.100" | |
# 创建证书扩展文件(v3.ext) | |
echo "authorityKeyIdentifier=keyid,issuer | |
basicConstraints=CA:FALSE | |
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment | |
subjectAltName = IP:192.168.1.100" > v3.ext | |
# 签名服务器证书 | |
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial \ | |
-out server.crt -days 365 -sha256 -extfile v3.ext |
2. 服务器配置(Tomcat示例)
xml
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" | |
maxThreads="150" SSLEnabled="true"> | |
<SSLHostConfig> | |
<Certificate certificateKeystoreFile="/path/to/keystore.jks" | |
certificateKeystorePassword="yourpassword" | |
type="RSA" /> | |
</SSLHostConfig> | |
</Connector> |
- 转换证书格式:
bash
# 将PEM转为PKCS12
openssl pkcs12 -export -in server.crt -inkey server.key -out server.p12 -name "tomcat"
# 导入到JKS
keytool -importkeystore -srckeystore server.p12 -srcstoretype PKCS12 \
-destkeystore keystore.jks -deststoretype JKS
3. 客户端信任配置
- Windows:双击
ca.crt
→ 安装到“受信任的根证书颁发机构”。 - Linux(Ubuntu):
bash
sudo cp ca.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates
四、验证与维护
- 测试访问
浏览器访问https://192.168.1.100
,检查是否显示绿色锁标志。- 若使用自签名证书,需手动信任证书(浏览器会提示“不受信任”)。
- 证书续期
- CA证书:到期前30天通过CA平台续费并更新服务器配置。
- 自签名证书:重新生成证书并更新服务器/客户端配置。
- 安全加固
- 禁用弱加密协议(如TLS 1.0/1.1)。
- 定期更新服务器软件(如Nginx、Tomcat)以修复漏洞。
五、常见问题与解决方案
- 证书不信任警告:确保客户端已正确导入根证书。
- IP地址变更:若需更换IP,需重新申请证书并更新所有配置。
- 端口冲突:检查443端口是否被其他服务占用(如Skype、IIS)。
通过以上步骤,可在局域网/内网环境中实现安全的HTTPS传输。根据实际需求选择CA证书或自签名证书,并严格遵循IP固定性、证书验证与客户端信任配置等关键原则。