在局域网或内网环境中部署HTTPS证书,可有效加密数据传输、防止中间人攻击,尤其适用于企业内部系统、IoT设备管理、开发测试环境等场景。以下结合主流证书颁发机构(CA)与自签名证书两种方案,详细说明实施步骤及注意事项。
一、前期准备与核心原则
-
IP地址固定性
确保目标内网IP为静态分配(如192.168.x.x或10.x.x.x),动态IP会导致证书失效。可通过路由器DHCP保留或服务器静态配置实现。 -
证书类型选择
- 受信任CA证书:适用于需要浏览器无警告访问的场景(如企业内网Web服务)。
- 自签名证书:适用于开发测试、内部系统或无法通过公网验证的环境。
二、方案一:通过受信任CA(如JoySSL)申请证书
1. 证书申请流程
- 注册CA账号
访问JoySSL官网,注册时填230925可获配置协助与折扣。
-
提交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固定性、证书验证与客户端信任配置等关键原则。