本文主要内容有两点:
1. centos 环境使用openssl生成自签名证书?
2. 如何使用(让浏览器信任)自签名证书?
3. ssl证书相关的文件有哪几种后缀,各有何意义?
4. ssl证书介绍
-
修改CA的配置文件
vi /etc/pki/tls/openssl.cnf
注意policy_match
-
创建初始文件
cd /etc/pki/CA
touch index.txt serial
echo 01 > serial
ll
生成CA根秘钥
openssl genrsa -out private/cakey.pem 2048
chmod 400 private/cakey.pem-
生成CA 根证书
openssl req -new -x509 -key private/cakey.pem -out cacert.pem
-
在需要申请证书的server上生成ssl密钥对(这里server与ca机构使用的同一台服务器)
cd /etc/pki/server-example
openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr
注意此处的country要与步骤4中ca根证书的country一致,因为在步骤1中的配置文件policy_match的countryName设置为了match
我们的CA为server的请求签署证书
openssl ca -in server.csr -keyfile /etc/pki/CA/private/cakey.pem -cert /etc/pki/CA/cacert.pem -extensions SAN -config <(cat /etc/pki/tls/openssl.cnf <(printf "[SAN]\nsubjectAltName=DNS:*.dana-tech.com,DNS:dana-tech.com")) -out server.crt
注意:为weilei.com签发的证书,chrome中提示不安全(如下图),firefox和edge中为安全,为*.weilei.com签发证书,签发命令中需增加san扩展的语句。
如何使用(让浏览器信任)自签名证书?
将ca根证书导入到受信任的根证书颁发机构中(windows中);
- 证书导入到控制台(edge和ie有效)
- win+r 运行mmc
- 文件>添加删除管理单元>证书>添加>完成>确定
- 受信任的根证书颁发机构>证书>(右键)所有任务>导入
- 根证书导入到chrome浏览器
- 设置>高级>管理证书>导入
- 根证书导入到firefox浏览器
- 选项>隐私与安全>证书>查看证书>导入
ssl证书相关的文件有哪几种后缀,各有何意义?
ssl证书实际使用(权威机构给我们颁发的证书)中有密钥文件、证书文件、证书链文件(权威ca颁发给中间颁发者这样的链路说明)[3]
- X.509可以有以下两种编码格式(也可作为文件后缀):
PEM(Base64编码,查看命令openssl x509 -in certificate.pem -text -noout),DER(二进制格式,查看命令openssl x509 -in certificate.der -inform der -text -noout)
- 密钥文件,以key为后缀,编码可以为pem或der
- 证书文件,linux多以crt为后缀(大多为pem编码),windows多以cer为后缀(大多为der编码)
- 证书链文件 ,格式类似证书文件
- 其他相关文件(自签名证书会涉及到)
- 证书签名请求文件,后缀名为csr,而是向证书颁发机构请求签名证书的申请,包含了公钥和一些申请信息,对应的私钥自己保存好
- PFX/P12 - predecessor of PKCS#12,
对*nix服务器来说,一般CRT和KEY是分开存放在不同文件中的,但Windows的IIS则将它们存在一个PFX文件中,(因此这个文件包含了证书及私钥)这样会不会不安全?应该不会,PFX通常会有一个"提取密码",你想把里面的东西读取出来的话,它就要求你提供提取密码,PFX使用的时DER编码,PFX其实是个证书密钥库.
- JKS -
即Java Key Storage,这是Java的专利,跟OpenSSL关系不大,利用Java的一个叫"keytool"的工具,可以将PFX转为JKS,当然了,keytool也能直接生成JKS.
SSL证书介绍
SSL证书的介绍可移步我的另一篇文章SSL证书
参考文章