数字证书
ssh-keygen
生成的密钥对:私钥 id_rsa 、公钥 id_rsa.pub ,一般用于登录系统。- 数字证书颁发机构(Certificate Authority,CA)拥有自己的私钥、公钥
签发证书的步骤
-
首先准备三个东西:私钥,公钥,个人信息(域名国家机构地区巴拉巴拉..)
-
把公钥+个人信息交给CA机构,CA机构用他的私钥给我们的 id_rsa.pub + 个人信息 加密,生成数字证书(有时用.pem的文件存储),证书包含了CA的公钥信息+我们的公钥+我们的个人信息。
-
这时我们就拥有了:私钥(
aoye.info.key
)、公钥(aoye.info.pub
)、数字证书(aoye.info.pem
又时候也用.cer) -
客户端向服务器发出加密请求,服务器用我们的私钥加密网页以后,连同本身的数字证书,一起发送给客户端。客户端(浏览器)的”证书管理器”,有”受信任的根证书颁发机构”列表。客户端会根据这张列表,查看解开数字证书的公钥是否在列表之内,来判断改数字证书是否是权威机构签发的。
-
然后客户端用数字证书里面的我们的公钥解开网页内容展示给用户。
openssl自签证书
展示help说明
[root@drools-service ~]# openssl genrsa -help
usage: genrsa [args] [numbits]
-des encrypt the generated key with DES in cbc mode
-des3 encrypt the generated key with DES in ede cbc mode (168 bit key)
-idea encrypt the generated key with IDEA in cbc mode
-seed
encrypt PEM output with cbc seed
-aes128, -aes192, -aes256
encrypt PEM output with cbc aes
-camellia128, -camellia192, -camellia256
encrypt PEM output with cbc camellia
-out file output the key to file
-passout arg output file pass phrase source
-f4 use F4 (0x10001) for the E value
-3 use 3 for the E value
-engine e use engine e, possibly a hardware device.
-rand file:file:...
load the file (or the files in the directory) into
the random number generator
创建私钥
创建私钥 duchaoqun.key(可以叫id_rsa、个人私钥,如果需要自签也就是CA私钥【假装自己是CA】,后缀可能又很多种)
➜ openssl genrsa -aes256 -out duchaoqun.key 2048
Generating RSA private key, 2048 bit long modulus
.................................................................................................................................................+++
........................................+++
e is 65537 (0x10001)
Enter pass phrase for duchaoqun:
Verifying - Enter pass phrase for duchaoqun:
# 实际的内容就是私钥:
# -----BEGIN RSA PRIVATE KEY-----
# -----END RSA PRIVATE KEY-----
根据私钥导出公钥
➜ openssl rsa -in duchaoqun.key -pubout -out duchaoqun.key.pem
Enter pass phrase for duchaoqun.key:
writing RSA key
# 文件内容
# -----BEGIN PUBLIC KEY-----
# -----END PUBLIC KEY-----
创建证书签发申请文件
根据上面生成私钥创建证书签发申请文件Cerificate Signing Request,csr是公钥证书原始文件,包含服务器信息和您的单位信息,得到证书签发申请文件后,我们可以将其发生给CA机构签发,当然我们也可以自行签发根证书。
openssl req -new -key duchaoqun.key -out duchaoqun.cn.csr
Country Name (2 letter code) []:CN
State or Province Name (full name) []:JiLin
Locality Name (eg, city) []:ChangChun
Organization Name (eg, company) []:DuChaoQun
Organizational Unit Name (eg, section) []:IT
Common Name (eg, fully qualified host name) []:www.duchaoqun.cn
Email Address []:[email protected]
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: your_password
# 填写上面基础信息,生成的文件内容如下
# -----BEGIN CERTIFICATE REQUEST-----
# -----END CERTIFICATE REQUEST-----
签发数字证书
签发数字证书(自签证书) duchaoqun.cn.cer (签X.509格式证书)
openssl x509 -req -days 3650 -sha1 -extensions v3_ca -signkey duchaoqun.key -in duchaoqun.cn.csr -out duchaoqun.cn.cer
Signature ok
subject=/C=CN/ST=JiLin/L=ChangChun/O=DuChaoQun/OU=IT/CN=www.duchaoqun.cn/[email protected]
Getting Private key
Enter pass phrase for duchaoqun.key: your_password
# 文件内容
# -----BEGIN CERTIFICATE-----
# -----END CERTIFICATE-----
转换证书格式
# 将证书转换成 Java 使用的格式(PKCS12),需要私钥(duchaoqun.key)和数字证书(duchaoqun.cn.cer)文件,生成.p12后缀的文件。
**注意:p12格式文件是一个密钥库,包含私钥和证书,需要一个访问密码,一般用在Java家族的容器上**
**注意:pfx格式文件跟p12是一样的,只是后缀不同**
openssl pkcs12 -export -cacerts -inkey duchaoqun.key -in duchaoqun.cn.cer -out duchaoqun.cn.p12
Enter pass phrase for duchaoqun.key: your_key_password
Enter Export Password: your_password
Verifying - Enter Export Password: your_password
# 查看刚刚生成的duchaoqun.cn.p12密钥库信息
keytool -list -keystore duchaoqun.cn.p12 -storetype pkcs12 -v -storepass your_password
总结
-rw-r--r-- 1 dcq staff 1.3K 1 12 09:31 duchaoqun.cn.cer # 自签证书文件
-rw-r--r-- 1 dcq staff 1.1K 1 12 09:15 duchaoqun.cn.csr # 证书申请文件
-rw-r--r-- 1 dcq staff 2.5K 1 12 09:35 duchaoqun.cn.p12 # JAVA系证书库
-rw-r--r-- 1 dcq staff 1.7K 1 12 08:54 duchaoqun.key # 私钥文件
-rw-r--r-- 1 dcq staff 451B 1 12 09:38 duchaoqun.key.pem # 公钥文件
关于jks格式的证书库
Java常用的一种密钥库,Java Key Store,可以同时容纳多个公钥或私钥,后缀更是千奇百怪。可以用jdk\bin下的 keytool 工具进行相关操作。keytool -v -list -keystore https_keystore.jks
注意:jre 中的默认证书库(jre/lib/security/cacerts)的秘密是changeit
# 导入证书
keytool -import -alias CFCA_EV_ROOT -file /opt/jdk1.8.0_162/jre/CFCA_EV_ROOT.cer -keystore cacerts
# 删除证书
keytool -delete -alias some_name -keystore cacerts
SSL数字证书类型
目前有三种类型的证书:DV、OV、EV
DV和OV型证书最大的差别是:DV型证书不包含企业名称信息,而OV型证书包含企业名称信息。
OV型和EV型证书,都包含了企业名称等信息,但EV证书因为其采用了更加严格的认证标准,浏览器对EV证书更加“信任”,当浏览器访问到EV证书时,可以在地址栏显示出公司名称,并将地址栏变成绿色。
挑选数字证书
-
如果仅需要通过在线加密实现数据安全、主要用于电子邮件、IM,CDN加速等,用户内部的OA,CRM,VPN系统。还是一个初创公司,业务刚刚起步。我们建议您可以先购买DV型证书,提高网站安全性和PR值。
-
如果面向公众提供服务,有用户账户登录,在线应用等,有多个应用需求,多个域名需要部署,公司已经拥有一定的规模,我们建议您购买OV型证书,方便用户快速识别网站真实性,实现全网SSL。
-
如果需要实现在线交易,在线支付功能有高价值的数据保密需求,需要防止可能遇到的钓鱼网站攻击属于大型企业或者金融机构,我们建议您购买EV型证书,提供最高安全性。
Mac 系统导入
在调试代码的时候需要本机Chrome访问,默认情况自签证书是不被信任的,这里导入到“钥匙串访问”,然后设置简介中的属性,设置为“总是信任”。