建立客户端与服务器的Https的连接需要证书进行双向验证后,才可访问。
不同数字证书部署在服务器上后,用户浏览器访问网站时,展示如下:
1、无证书时
显示不安全标识。
2、域名型(DV)SSL
可以显示安全连接标识,证书无法显示组织信息。
3、企业型(OV)SSL
可以显示安全连接标识,证书详细内显示组织信息。
4、增强型(EV)SSL
地址栏绿色,可以显示安全连接标识,地址栏直接显示组织信息。
证书的创建与作用
生成环境:
Linux:CentOS_7(及以上)
Tomcat:ApacheTomcat_8.5.42(及以上)
#解压tar包tar-xzvfopenssl-1.1.0c.tar.gz#进入加压后的文件夹内cdopenssl-1.1.0c#安装openssl到/usr/local/openssl目录,安装之后,编译;这个时候执行需要有耐心,可以查看命令行一直在滚屏,等到滚屏结束,安装编译完成./config--prefix=/usr/local/openssl&&make&&makeinstall#重命名mv/usr/bin/openssl/usr/bin/openssl.orimv/usr/include/openssl/usr/include/openssl.ori#将安装好的openssl命令软连到对应位置ln-s/usr/local/ssl/bin/openssl/usr/bin/opensslln-s/usr/local/openssl/include/openssl/usr/include/openssl#在/etc/ld.so.conf文件中写入openssl库文件的搜索路径echo/usr/local/openssl/lib>>/etc/ld.so.confldconfig-vopensslversion-a
2.1创建根证书密钥文件(自己做CA)root.key
#生成命令opensslgenrsa-des3-outroot.key2048#输出日志GeneratingRSAprivatekey,2048bitlongmodulus.....................................................................................................................+++..........................+++eis65537(0x010001)Enterpassphraseforroot.key:←#在这输入一个新密码Verifying–Enterpassphraseforroot.key:←在这重新输入一遍密码
2.2创建根证书的申请文件root.csr
2.3创建一个自当前日期起为期十年的根证书root.crt
#生成命令opensslx509-req-days3650-sha256-extfile/usr/local/openssl/ssl/openssl.cnf-extensionsv3_ca-signkeyroot.key-inroot.csr-outroot.crt#输出日志Signatureoksubject=/C=CN/ST=BeiJing/L=BeiJing/O=MyCompanyCorp./emailAddress=admin@mycompany.comGettingPrivatekeyEnterpassphraseforroot.key:←在这输入前面创建的密码
2.4根据CA证书生成truststoreJKS文件root.truststore
这一步只针对双向认证,单向不需要
#生成命令keytool-keystoreroot.truststore-keypass123456-storepass123456-aliasca-import-trustcacerts-file/tmp/ca/root.crt#键入回车后,提示是否信任此证书,输入yes,则生成truststore成功
1.创建服务器证书密钥server.key
#生成命令opensslgenrsa-des3-outserver.key2048#输出内容为:GeneratingRSAprivatekey,2048bitlongmodulus...........................+++...............+++eis65537(0x010001)Enterpassphraseforserver.key:←在这输入前面创建的密码Verifying-Enterpassphraseforserver.key:←在这重新输入一遍密码#运行时会提示输入密码,此密码用于加密key文件(参数des3便是指加密算法,当然也可以选用其他你认为安全的算法.),以后每当需读取此文件(通过openssl提供的命令或API)都需输入口令(密码).如果觉得不方便,也可以去除这个口令,但一定要采取其他的保护措施!#去除口令的命令opensslrsa-inserver.key-outserver.key
2.创建服务器证书的申请文件server.csr
3.创建自当前日期起有效期为期十年的服务器证书server.crt
#生成命令opensslx509-req-days3650-sha256-extfile/usr/local/openssl/ssl/openssl.cnf-extensionsv3_req-CAroot.crt-CAkeyroot.key-CAcreateserial-inserver.csr-outserver.crt#输出内容为:Signatureoksubject=/C=CN/ST=BeiJing/L=BeiJing/O=MyCompanyCorp./CN=www.mycompany.com/emailAddress=admin@mycompany.comGettingCAPrivateKeyEnterpassphraseforroot.key:←输入前面创建的密码
4.导出.p12文件server.p12
#生成命令opensslpkcs12-export-in/tmp/ca/server.crt-inkey/tmp/ca/server.key-out/tmp/ca/server.p12-name"server"根据命令提示,输入server.key密码,创建p12密码。
5.将.p12文件导入到keystoreJKS文件server.keystore
#生成命令keytool-importkeystore-v-srckeystore/tmp/ca/server.p12-srcstoretypepkcs12-srcstorepass123456-destkeystore/tmp/ca/server.keystore-deststoretypejks-deststorepass123456这里srcstorepass后面的123456为server.p12的密码deststorepass后的123456为keyStore的密码
1.创建客户端证书密钥文件client.key
#生成命令opensslgenrsa-des3-outclient.key2048#输出内容为:GeneratingRSAprivatekey,2048bitlongmodulus...............................+++.........................+++eis65537(0x010001)Enterpassphraseforclient.key:←输入新密码Verifying–Enterpassphraseforclient.key:←重新输入一遍密码
2.创建客户端证书的申请文件client.csr
3.创建一个自当前日期起有效期为十年的客户端证书client.crt
#生成命令opensslx509-req-days3650-sha256-extfile/usr/local/openssl/ssl/openssl.cnf-extensionsv3_req-CAroot.crt-CAkeyroot.key-CAcreateserial-inclient.csr-outclient.crt#输出内容为:Signatureoksubject=/C=CN/ST=BeiJing/L=BeiJing/O=MyCompanyCorp./CN=www.mycompany.com/emailAddress=admin@mycompany.comGettingCAPrivateKeyEnterpassphraseforroot.key:←输入上面创建的密码
4.导出.p12文件client.p12
#生成命令opensslpkcs12-export-in/tmp/ca/client.crt-inkey/tmp/ca/client.key-out/tmp/ca/client.p12-name"client"根据命令提示,输入client.key密码,创建p12密码。
1.关闭tomcat
tomcat的bin目录下执行
shutdown.sh
2.将证书放入web服务器
#将keystore文件(server.keystore)放在web服务器上cp/tmp/ca/server.keystore/你的tomcat根目录/conf#将truststore文件(root.truststore)放在web服务器上cp/tmp/ca/root.truststore/你的tomcat根目录/conf