一、要使用 OpenSSL 为内网 IP 生成 CA 证书,您需要遵循以下步骤:
1、创建一个存放证书的文件夹
mkdir /opt/zhengshu
注意:大家自己按照自己的目录创建就行,我的直接放在/opt目录下了。
2、生成私钥和证书请求
openssl req -newkey rsa:2048 -nodes -keyout ca.key -out ca.csr
注意:申请的时候会让大家填一些参数,下面是参数说明及示例:
字段 字段含义 示例
/C= Country 国家 CN
/ST= State or Province 省 beijing
/L= Location or City 城市 beijing
/O= Organization 组织或企业 stars-mine
/OU= Organization Unit 部门 stars-mine
/CN= Common Name 是证书拥有者名称 172.xx.xx.xx
#下面这两个参数,大家直接回车跳过就行
A challenge password []:
An optional company name []:
3、自签署证书
openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt
4、生成服务器证书
openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr
注意:这一步也会输入参数,要和上一次输入的保持一致
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 365
5、生成客户端证书
openssl genrsa -out client.key 2048
openssl req -new -key client.key -out client.csr
注意:这一步也会输入参数,要和前两次输入的保持一致
openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt -days 365
6、到此,所有证书就生成完毕
二、证书配置
1、配置示例(Apache):
<VirtualHost *:443>ServerName example.comSSLEngine onSSLCertificateFile /path/to/server.crtSSLCertificateKeyFile /path/to/server.keySSLCACertificateFile /path/to/ca.crt...
</VirtualHost>
2、配置示例(Nginx):
server {listen 80;listen 443 ssl;server_name 172.21.10.101;ssl_certificate /opt/server.crt;ssl_certificate_key /opt/server.key;if ($scheme = http) {return 301 https://$host$uri?$args;}#charset koi8-r;#access_log logs/host.access.log main;location / {#root html;#index index.html index.htm;proxy_pass http://172.xx.xx.xx:9000/xxx/xxx/;}error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}}
3、配置示例(Tomcat):
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"maxThreads="150" scheme="https" secure="true"keystoreFile="/path/to/server.keystore" keystorePass="password"truststoreFile="/path/to/ca.crt" truststorePass="password"clientAuth="true" sslProtocol="TLS"/>
注意:第一步的这些命令将生成一个名为 ca.crt
的 CA 证书,一个名为 server.crt
的服务器证书以及一个名为 client.crt
的客户端证书。您可以将这些证书分发给您的应用程序和客户端,以启用 SSL/TLS 加密。
三、常见问题处理
1、内网IP配置了SSL证书后,https无法访问
解决方法:查看服务器防火墙是否都关闭,一定要关闭防火墙
service iptables status
systemctl status firewalld
状态说明:
出现Active: active (running)切高亮显示则表示是启动状态。出现 Active: inactive (dead)灰色表示停止,看单词也行。