使用wireshark对HTTPS解密的实践(六)--HTTPS配置时的证书生成

证书申请

申请SSL证书主要需要经过以下3个步骤:
1.制作CSR文件。
CSR就是Certificate Signing Request证书请求文件。这个文件是由申请人制作,在制作的同时,系统会产生2个密钥,一个是公钥就是这个CSR文件,另外一个是私钥,存放在服务器上。要制作CSR文件,申请人可以参考WEB SERVER的文档,一般APACHE等,使用OPENSSL命令行来生成KEY+CSR2个文件,Tomcat,JBoss,Resin等使用KEYTOOL来生成JKS和CSR文件,IIS通过向导建立一个挂起的请求和一个CSR文件。
2.CA认证。
将CSR提交给CA,CA一般有2种认证方式:
    1.域名认证,一般通过对管理员邮箱认证的方式,这种方式认证速度快,但是签发的证书中没有企业的名称;
    2.企业文档认证,需要提供企业的营业执照。一般需要3-5个工作日。 也有需要同时认证以上2种方式的证书,叫EV证书,这种证书可以使IE7以上的浏览器地址栏变成绿色,所以认证也最严格。
3.证书的安装。
在收到CA的证书后,可以将证书部署上服务器,一般APACHE文件直接将KEY+CER复制到文件上,然后修改HTTPD.CONF文件;TOMCAT等,需要将CA签发的证书CER文件导入JKS文件后,复制上服务器,然后修改SERVER.XML;IIS需要处理挂起的请求,将CER文件导入。

证书分类

SSL证书又称“服务器证书,https证书,CA证书,网站安全证书”等,是数字证书的一种
SSL证书产品如下:
单域名DV版(保护一个具体域名)
多域名OV版(可以将多个域名放在一张证书里面)
通配符EV版(保护一个域名级其所有下一级的子域名)
多域名通配符(功能类似将多个通配符证书合在一起)

单域名证书
如果只有一个域名,这很有用。但是如果有其他网站或子域名,则不会在该证书下进行覆盖。
1、当申请www前缀的域名申请证书的时候,默认是保护不带 www 的主域名,反之亦然。
2、当为其他前缀的子域名申请证书时,则只能保护当前子域名不能保护不带前缀的主域名。

多域名证书
多域型SSL证书支持多个后缀的域名。如果有多个顶级域名完全不同的域名需要使用SSL证书,请选择支持多域名的SSL证书类型。
注意:每一个品牌多域名证书默认保护的域名数量不一样,有时候超过多域名证书本身默认保护的域名数量之后,多增加一个域名需要支付的费用,但这比单个申请节约了很多成本,包括购买成本和审核带来的时间成本。

通配符证书
这种版本的证书可以保护同一主域名下同一级所有的子域名(多个顶级域名相同的子域名需要使用SSL证书),不限个数,(如:123.com申请通配符证书时,csr域名填写为 *.123.com,*可以是任何前缀)。
通配符安全证书具有最大限度的兼容性,提供了很大的灵活性和价值,管理员可增加更多的子域,简便管理。

 

证书格式

通常,SSL证书包括CA证书、服务器证书以及客户端证书,他们的区别主要在:

1、CA证书,也就是根证书。如果不安全该证书,即使安装了其他证书,浏览器也会提示不安全,但是在单向https认证中,该证书的安装是可选的。

2、服务器证书。SSL证书中必须要安装的证书之一,通过该证书的key生成csr文件,然后再通过CA证书签名,生成服务器的证书。

3、客户端证书。在双向https验证中,就必须有客户端证书,生成方式同服务器证书一样,单向证书则不用生成。

SSL证书几类文件介绍
而证书的后缀主要有.key、.csr、.crt、.pem等,后缀一般是windows系统判断文件类型所使用的,Linux是不使用后缀名来判断文件名称的,但是由于约定成俗,我们一般都会添加这些后缀,以下简单介绍一下这些后缀文件的作用。

1、.key文件:密钥文件,SSL证书的私钥就包含在其中;

2、.csr文件:这个文件里面包含着证书的公钥和其他一些公司信息,通过请求签名之后就可以直接生出证书;

3、.crt文件:该文件中也包含了证书的公钥、签名信息以及根据不同类型证书携带不同的认证信息,如IP等(该文件在有些机构、系统中也可能表现为.cert后缀);

4、.pem文件:该文件相对比较少见,里面包含着证书的私钥以及部分证书信息。

SSL证书生成的方法根据系统的不同,方法方式也更有不同,如有需要,可以查看SSL.LA上的帮助文档,里面汇聚了几乎所有的SSL证书的方法。

#######################################

.PEM,一般是文本格式,可保存证书,可保存私钥。
.DER .CER,文件是二进制格式,只保存证书,不保存私钥。
.PFX .P12,二进制格式,同时包含证书和私钥,一般有密码保护。
.CRT,可以是二进制格式,可以是文本格式,与 .DER 格式相同,不保存私钥。
.JKS,二进制格式,同时包含证书和私钥,一般有密码保护。

PEM – Privacy Enhanced Mail的缩写,以文本的方式进行存储。打开看文本格式,以”—–BEGIN…”开头, “—–END…”结尾,内容是BASE64编码. 查看PEM格式证书的信息:openssl x509 -in certificate.pem -text -noout Apache和*NIX服务器偏向于使用这种编码格式.

DER – Distinguished Encoding Rules的缩写,以二进制方式进行存储,文件结构无法直接预览,查看DER格式证书的信息:openssl x509 -in certificate.der -inform der -text -noout Java和Windows服务器偏向于使用这种编码格式.

CER – 还是certificate,还是证书,常见于Windows系统,同样的,可能是PEM编码,也可能是DER编码,大多数应该是DER编码.

PFX/P12 – predecessor of PKCS#12,对Unix服务器来说,一般CRT和KEY是分开存放在不同文件中的,但Windows的IIS则将它们存在一个PFX文件中,(因此这个文件包含了证书及私钥)这样会不会不安全?应该不会,PFX通常会有一个”提取密码”,你想把里面的东西读取出来的话,它就要求你提供提取密码。

CRT
Certificate 的简称,有可能是 PEM 编码格式,也有可能是 DER 编码格式。如何查看请参考前两种格式。

JKS – 即Java Key Storage,这是Java的专利,跟OpenSSL关系不大,利用Java的一个叫”keytool”的工具,可以将PFX转为JKS,当然了,keytool也能直接生成JKS。

 

证书生成

自己测试了多种方法,均可以:

1、
openssl genrsa -out test/server.key 1024
openssl req -new -key test/server.key -out test/certreq.csr
openssl x509 -req -in test/certreq.csr -out test/cert.cer -signkey test/server.key -days 3650

tomcat中配置为

               maxThreads="150" scheme="https" secure="true"  
               SSLCertificateFile="cert.cer"  
               SSLCertificateKeyFile="server.key"  
               sslProtocol="TLS"  sslEnabledProtocols="TLSv1.2"/>

2、
keytool -genkeypair -keyalg RSA -keysize 2048 -sigalg SHA1withRSA -validity 36000 -alias web.test.com -keystore test.store
keytool -exportcert -alias web.test.com -keystore test.store -file test.cer -rfc
openssl genrsa -aes256 -out ca.key.pem 2048
openssl req -new -key ca.key.pem -out test2/ca.csr
openssl x509 -req -days 10000 -sha1 -extfile openssl.cnf -extensions v3_ca -signkey ca.key.pem -in test2/ca.csr  -out test2/ca.cer
openssl pkcs12 -export -cacerts -inkey ca.key.pem  -in test2/ca.cer -out test2/ca.p12
keytool -list -keystore test2/ca.p12

tomcat中配置为:

               maxThreads="150" SSLEnabled="true" sslProtocal="TLS" sslEnabledProtocols="TLSv1.2" ciphers="TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_3DES_EDE_CBC_SHA,SSL_RSA_WITH_3DES_EDE_CBC_SHA"
               keystoreFile="ca.p12" keystorePass="123456">

3、
详细可见https://www.cnblogs.com/osbreak/p/9486188.html
创建私钥:
openssl genrsa -out test3/ca-key.pem 1024
创建证书请求
openssl req -new -out test3/ca-req.csr -key test3/ca-key.pem
自签署证书
openssl x509 -req -in test3/ca-req.csr -out test3/ca-cert.pem -signkey test3/ca-key.pem -days 3650
将证书导出成浏览器支持的.p12格式
openssl pkcs12 -export -clcerts -in test3/ca-cert.pem -inkey test3/ca-key.pem -out test3/ca3.p12

tomcat配置类似第2种

4、
server证书
  (1)生成server证书:
openssl genrsa -out test3/server-key.pem 1024
   (2)创建证书请求:
openssl req -new -out test3/server-req.csr -key test3/server-key.pem
   (3)自签署证书:
openssl x509 -req -in test3/server-req.csr -out test3/server-cert.pem -signkey test3/server-key.pem -CA test3/ca-cert.pem -CAkey test3/ca-key.pem -CAcreateserial -days 3650
  (4)将证书导出成浏览器支持的.p12格式:
openssl pkcs12 -export -clcerts -in test3/server-cert.pem -inkey test3/server-key.pem -out test3/server.

tomcat中配置为:

               maxThreads="150" SSLEnabled="true" sslProtocal="TLS" sslEnabledProtocols="TLSv1"
               ciphers="TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_3DES_EDE_CBC_SHA,SSL_RSA_WITH_3DES_EDE_CBC_SHA"
               keystoreFile="server.p12" keystorePass="123456">

你可能感兴趣的:(流量解析)