k8s环境生成自签名证书配置secret tls并配置到浏览器
最近公司的网站偶尔会出现“network error”的报错导致网页不稳定,打开开发者工具发现报错为“Failed to load resource: net ::ERR_CERT_AUTHORITY_INVALIED”原因为网页存在认证问题。解决措施有三种:1.申请域名购买证书;2.自己生成自签名证书;3.将https访问方式改为http。综合考虑成本和安全因素后决定使用自签名证书来解决此问题。
背景
最近公司的网站偶尔会出现“network error”的报错导致网页不稳定,打开开发者工具发现报错为“Failed to load resource: net ::ERR_CERT_AUTHORITY_INVALIED”原因为网页存在认证问题。解决措施有三种:1.申请域名购买证书;2.自己生成自签名证书;3.将https访问方式改为http。综合考虑成本和安全因素后决定使用自签名证书来解决此问题。
生成自签名证书
1.使用命令行交互方式生成证书
生成自签名证书需要用到openssl工具,先检查下服务器上有没有openssl,如果没有那就yum install openssl安装一下
生成自签名证书步骤
(1)生成一个私钥
openssl genrsa -des3 -out server.key 2048
(2)生成一个CSR
openssl req -new -key server.key -out server.csr
这里需要填写国家,城市,组织,域名等一些信息
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:SH
Locality Name (eg, city) []:SH
Organization Name (eg, company) [Internet Widgits Pty Ltd]:XXX
Organizational Unit Name (eg, section) []:XXX
Common Name (e.g. server FQDN or YOUR name) []:XXX.com
Email Address []:XXXX
(3)生成自签名证书
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
这样我们就生成了一个简单的自签名证书
2.使用脚本方式生成自签名证书
命令行交互式方式需要一个个的手动输入国家,城市等信息很容易出错。使用脚本方式可以快速的生成自签名证书。
cat cert.sh
#!/bin/sh
filename="cert"
printf "[req]
prompt = no
default_bits = 4096
default_md = sha256
encrypt_key = no
string_mask = utf8only
distinguished_name = cert_distinguished_name
req_extensions = req_x509v3_extensions
x509_extensions = req_x509v3_extensions
[ cert_distinguished_name ]
Country Name = CN
State or Province Name = SH
Locality Name = SH
Organization Name = XXX
Organizational Unit Name = XXX
Common Name = XXX.com
Email Address = XXXX
[req_x509v3_extensions]
basicConstraints = critical,CA:true
subjectKeyIdentifier = hash
keyUsage = critical,digitalSignature,keyCertSign,cRLSign #,keyEncipherment
extendedKeyUsage = critical,serverAuth #, clientAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = XXX.com
openssl req -x509 -newkey rsa:2048 -keyout /root/ssl/server.key -out /root/ssl/server.crt -days 3650
增加cert.sh执行权限
chmod +x cert.sh
执行cert.sh,生成自签名证书
sh cert.sh
用生成的自签名证书创建secret证书,用于域名访问
kubectl create --namespace=XXX secret tls tls-certificate-XXX.com --key /root/ssl/server.key --cert /root/ssl/server.crt
浏览器中添加证书
生成证书后我们需要将证书添加到浏览器中,否则访问网页依然会有该网站不安全的提示
浏览器添加证书方法如下
(1)打开浏览器设置搜索安全
点进去选择管理证书
(2)导入证书
点击管理证书,选择“受信任的根证书颁发机构”,点击导入
将本地的证书导入进来
选择将证书存储在“受信任的根证书颁发机构”
点击下一步,最后会提示导入成功
此时再次访问网页就没有https不安全的提示了
更多推荐
所有评论(0)