https

https和http主要区别就是前者加入了ssl协议,也就是一种将信息加密解密的协议,简称公钥和私钥,公钥加密,因为可流传,公之于众对安全性无损,故名公钥;私钥解密,因为不可流传,只能由一个人掌握,故名私钥;

非对称加密算法:又称双钥加密,包括公钥和私钥。公钥/私钥一一对应,有一把公钥就必然有一把与之对应的、独一无二的私钥,反之亦成立。公钥可以解开私钥加密的信息,反之亦成立;

但是公钥私钥是用的非对称加密,安全性高,但是加密解密很慢,因此若回话的每次传输都使用非对称加密,效率会极低
因此,此时便想到利用对称加密来传输回话消息,而建立回话连接的时候使用非对称加密来加密对称加密
即:客户端公钥加密会话秘钥发送给服务器,服务器私钥解密得到会话秘钥;利用对称加密和非对称加密来保证安全性和性能都可接受!

CA:证书授权中心( certificate authority)。 它呢,类似于国家出入境管理处一样,给别人颁发护照;也类似于国家工商管理局一样,给公司企业颁发营业执照。
它有两大主要性质:

  1. CA本身是受信任的 // 国际认可的
  2. 给他受信任的申请对象颁发证书 // 和办理护照一样,要确定你的合法身份,你不能是犯罪分子或造反派。当然,你需要被收保护费,同时,CA可以随时吊销你的证书。
    证书长啥样?其实你的电脑中有一堆CA证书。你可以看一看嘛:
    360浏览器: 选项/设置-> 高级设置 -> 隐私于安全 -> 管理 HTTPS/SSL 证书 -> 证书颁发机构
    火狐浏览器: 首选项 -> 高级 -> 证书 -> 查看证书 -> 证书机构
    chrome浏览器: 设置 -> 高级 -> 管理证书 -> 授权中心
    ubuntu: /etc/ssl/certs
    这些都是 CA 的证书!
    证书授权中心是一个名称,世界各地有很多,说白了就是权威的互联网公司,在国际上知名度和受认可程度很高,它就有资格给你颁发证书,你的证书就越有效,只要可以让大多数浏览器和用户都认可你,那你就可以成为一个CA。

利用p12文件可以生成公钥和私钥:
openssl pkcs12 -in file.p12 -clcerts -out public_key.pem
openssl pkcs12 -in file.p12 -nodes -out private_key.pem(如果nodes不行就改成clcerts)
https_第1张图片
OpenSSL命令—pkcs12详解:https://blog.csdn.net/as3luyuan123/article/details/16105475

证书格式转换:
1\ cer to pem
openssl x509 -in BMJ.cer -outform PEM -out BMJ.pem

2\ pfx to pem
#openssl pkcs12 -in /root/snn_code/pfx_code/base64190606010101.pfx -clcerts -nokeys -out /root/snn_code/pfx_code/base64190606010101.crt
#openssl x509 -in base64190606010101.crt -outform PEM -out base64190606010101.pem

3\ pfx to key
#gmssl pkcs12 -info -in base64190606010101.pfx -nocerts -nodes -out base64190606010101.key
https_第2张图片

将数字证书导入到自己的JRE证书库中

数字证书中存储的一般是某个服务器的域名和公钥,服务器证书需要导入到客户端的JRE中,我将刚才生成的cjTomcat.cer这个证书视为服务器相关的信息。现在我要将条目名为cjTomcat的数字证书导入到我本地的JRE受信任的证书库中,导入命令是:

keytool    -import     -alias    "cjTomcat"    -keystore   C:\Java\jdk1.8.0_40\jre\lib\security\cacerts   -file   D:\keystore\cjTomcat.cer    -trustcacerts    -storepass    changeit

说明:changeit是cacerts这个证书库的默认口令,因为我们需要操作cacerts这个证书库文件,所以需要输入该证书库的密码,C:\Java\jdk1.8.0_40\jre需要替换为你自己的JRE目录

回车之后,会询问是否信任cjTomcat.cer中存储的证书,输入“y"回车。

其他说明

上面命令中的参数不一一解释,很多都很直观,简单说明一下-alias指定条目名称,-keyalg "RSA"指定加密算法用RSA,-keystor指定秘钥库文件,如果目录有空格,那么请使用双引号。-validity 365指定有效期是365天。秘钥库的后缀名可以用任意名称,或者干脆不要后缀名也是可以的。

出自:https://blog.csdn.net/yjaspire/article/details/82858084

出自:https://blog.csdn.net/pucao_cug/article/details/70136159?utm_source=copy

出自:https://blog.csdn.net/hxf123456789/article/details/80281827

keytool命令详解官网:https://docs.oracle.com/javase/7/docs/technotes/tools/solaris/keytool.html

p12文件转化为keystore文件

进入cmd控制台,cd 进入.p12证书的文件夹,然后运行以下命令:

//将p12导入至keystore
keytool -v -importkeystore -srckeystore temp.p12 -srcstoretype PKCS12 -destkeystore temp.keystore -deststoretype JKS

只是这样貌似:keystore的密码是你设置的,alias和alias的密码是原来p12的密码。

//查看keystore
keytool -v -list -keystore temp.keystore
签名(1-证书链别名)
jarsigner -verbose -keystore d:\key.keystore -signedjar d:\signed.apk d:\tap_unsign.apk 1
删除keystore中别名为help.com的证书链
keytool -delete -alias help.com -keystore key.keystore

你可能感兴趣的:(web项目)