前言:
CA认证机构默认给150多个网站做了安全认证,也就是说有150多个证书是合法的,要想得到一个合法签名证书,需要到CA认证机构获取,但个人认为这并没有神马卵用(只是浪费钱,12306用的就是自己签名的证书),只是在浏览器访问时,不再提示非法网址罢了,而我们自己创建的网址,对客户端严格来说,是需要双向验证客户端和服务器的证书的。HTTPS也是为此而生的,Https的每次请求连接,都需要经过三次握手,其实就是对客户端和服务器是否正确的校验,握手成功后才会发送数据;HTTPS是HTTP的之下加入了SSL(Secure Socket Layer),安全的基础就靠这个SSL(可理解为签名证书)了,SSL/TLS证书包含身份识别(common name)和公钥,所以要生成SSL/TLS证书这里需要准备这两个东西。
ssl作用 :
- 认证用户和服务器,确保数据发送到正确的客户机和服务器;(验证证书)
- 加密数据以防止数据中途被窃取;(加密)
- 维护数据的完整性,确保数据在传输过程中不被改变。(摘要算法)
使用:
采用HTTPS协议的”服务器”必须要有一套数字证书(CA),可以自己制作,也可以向组织申请。区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,若客户端为看到有验证的代码,则很可能服务器用的是受信机构颁发的证书,而使用受信任的公司申请的证书则不会弹出提示页面。这套证书其实就是一对公钥和私钥。
- 什么是自签名证书?
就是没有通过受信任的证书颁发机构, 自己给自己颁发的证书. - 自签名证书怎么生成?
- KeyTool 生成自签名证书:
- 服务器生成证书:
keytool -genkey -alias tomcat -keypass -keyalg RSA -keysize 1024 -validity 365 -keystore D:/keys/tomcat.keystore -storepass
- 服务器生成证书:
- 客户端生成证书:
keytool -genkey -alias client1 -keypass -keyalg RSA -keysize 1024 -validity 365 -storetype PKCS12 -keystore D:/keys/client1.p12 -storepass - 让服务器信任客户端证书:必须先把客户端证书导出为一个单独的CER文件,使用如下命令:
keytool -export -alias client1 -keystore D:/keys/client.p12 -storetype PKCS12 -keypass -file D:/keys/client.cer(CER文件的密码可能需要重新输入) - 然后将两个文件导入到服务器的证书库,添加为信任证书:keytool -import -v -file D:/keys/client.cer -keystore D:/keys/tomcat.keystore -storepass
- 补充:
- 所有公钥证书都有两种格式:纯文本的.crt格式或是二进制的.cer格式,两种都可以用。将生成的文件.keystore 复制到项目路径 /androidappdir/res/raw/ 中;
- 两种证书的生成用的是默认的公钥私钥,新的公钥和私钥的生成方法:若安装了git,点开git->Git Bash输入ssh-keygen,然后一直点回车,这样就会在c/Users/Administrator/.ssh中生成两个文件:id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥;
- 查看”签名文件”信息方法:
在dos或Terminal中的输入(jdk中的keytool)命令:
keytool -v -list -keystore keystore绝对路径,或直接进入到目录下在dos或Terminal中执行:
keytool -v -list -keystore debug.keystore
- 如何实现Https的签名验证功能呢?
- okhttp3方式:
new OkHttpClient.Builder().sslSocketFactory(getSSLSocketFa

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/67112.html