一:https的简单介绍及SSL证书的生成
二:https的SSL证书在服务器端的部署,基于tomcat,spring boot
三:让服务器同时支持http、https,基于spring boot
四:https的SSL证书在Android端基于okhttp,Retrofit的使用php
全部文章会优先在:
微信公众号“颜家大少”中发布
转载请标明出处html
https的介绍
SSL证书的介绍
自签名SSL证书介绍及生成方法
CA证书介绍及申请vue
HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL(Secure Socket Layer)。java
SSL协议提供的服务主要有:
1)认证用户和服务器,确保数据发送到正确的客户机和服务器
2)加密数据以防止数据中途被窃取
3)维护数据的完整性,确保数据在传输过程当中不被改变android
关于https的介绍,网上有不少更详细更专业的资料,在此只做简单介绍,让你们有一些概念性的了解,并最终完成android端和服务器端的https的实现。 算法
SSL证书是数字证书的一种,相似于驾驶证、护照和营业执照的电子副本。
SSL证书的两大做用:数据加密和身份认证
SSL 证书遵照 SSL协议,经过在客户端浏览器和Web服务器之间创建一条SSL安全通道
一个有效、可信的 SSL 数字证书包括一个公共密钥和一个私用密钥。公共密钥用于加密信息,私用密钥用于解译加密的信息。所以,浏览器指向一个安全域时,SSL 将同步确认服务器和客户端,并建立一种加密方式和一个惟一的会话密钥。它们能够启动一个保证消息的隐私性和完整性的安全会话。spring
所谓自签名证书,就是本身颁发给本身的证书 ,因此颁证的主体是不可信任的
自签证书是不会被浏览器信任的证书的,用户在访问自签证书时,浏览器会警告用户此证书不受信任,须要人工确认是否信任此证书,以下图:
既然自签证书是不可信任的,那为什么还有人包括12306也在用自签证书呢?
主要缘由是:
1)自签证书是免费的
2)自签证书相对申请CA证书,流程更简单
3)自签证书一样能够对数据进行加密
4)自签证书的有效期能够设置很长,免去续签的麻烦
5)自签证书更方便测试,好比说你想生成多少个不一样服务器ip的均可以
因此对于一些我的开发者来讲使用自签证书可能会更方便,只要你能接受别人浏览你网站时弹出的提醒:不安全数据库
相对自签证书的本身给本身颁证,由权威的证书受权机构(Certificate Authority)颁发的签名证书,咱们称之为:CA证书
CA证书保证书持有者的身份和公钥的拥有权
浏览器对CA证书是信任的,以下图:apache
自签证书虽然提示:不安全。但仍是有不少上面已提到的好处,因此下面先说说自签证书的生成,主要使用Java JDK下的:keytool.exe
1:先下载安装Java JDK:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
2:安装完后,根据实际的路径找到keytool.exe,如个人在此路径:C:\Program Files (x86)\Java\jdk1.8.0_101\bin\keytool.exe浏览器
3:生成keystore。打开命令行(cmd),去到keytool所在的路径,运行:
keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore d:\mykeystore\keystore.p12 -validity 3650 -ext san=ip:192.168.100.132 -dname "CN=garyyan, OU=mycompany, O=mycompany, L=gd, ST=gd, C=china"
此命令中间只须要输入密码,就能生成keystore,假设密码是:123456
其中:
1)keystore可理解为一个数据库,能够存不少个组数据。
每组数据主要包含下面两种数据:
a:密钥实体(Key entity)——密钥(secret key)又或者是私钥和配对公钥(采用非对称加密)
b:可信任的证书实体(trusted certificate entries)——只包含公钥
2)-keystore d:\mykeystore\keystore.p12,指定在d:\mykeystore(先要手动建立此文件夹),生成keystore:keystore.p12
3)-alias tomcat,为其指明在keystore中的惟一的别名:tomcat ,由于keystore中可能还存有其它的别名,如:tomcat 2
4)-storetype PKCS12指明密钥仓库类型是PKCS12
5)-keyalg RSA,指定加密算法,本例中的采用通用的RAS加密算法
6)-keysize 2048指定密钥的长度为2048
7)-validity 3650 指定证书的有效期为3650天
8)-ext san=ip:192.168.100.132请根据你的服务器的IP地址设置,若是不进行设置,客户端在访问的时候可能会报错
9)-dname “CN=garyyan, OU=mycompany,O=mycompany,L=gd, ST=gd, C=china”
其中:”CN=(名字与姓氏), OU=(组织单位名称), O=(组织名称), L=(城市或区域名称), ST=(州或省份名称), C=(单位的两字母国家代码)”,我在测试的过程当中发现随便填就行
4:导出公钥证书(主要用于客户端):
运行命令:
keytool -export -keystore d:\mykeystore\keystore.p12 -alias tomcat -file mycer.cer -storepass 123456
其中:
1)-keystore d:\mykeystore\keystore.p12 是指上面的keystore文件
2)-alias tomcat是指定别名为tomcat的那一组
3)-file mycer.cer指定在当前目录生成名为mycer.cer的证书
4)-storepass 123456是上面生成keystore 所用的密码
有不少网站能申请CA证书,如沃通,腾讯,阿里云等,你们可根据本身的喜爱去申请
CA证书又分免费和不一样价钱的,固然一分钱一分货,对于咱们我的开发者来讲,免费的CA证书就足够了,
我我的主要是想解决当别人访问个人https网站时弹出“不安全”的这个问题,由于“不安全”这个提示被人感受很像钓鱼网站 :P
下面主要讲的是去阿里云申请免费型DV SSL证书,此种证书是每一个证书绑定一个域名,若有多个域名可申请多个证书
1:找到阿里云的CA证书
打开阿里云主页:https://www.aliyun.com/,选“产品”再选“CA证书”以下图:
2:选择:当即购买
3:选择免费型DV SSL(最主要是不用钱呵 :p),点当即购买,以下图:
4:点“确认订单”->”去支付“
5:点”证书控制台“
6:点以下图的”补全“,而后填写我的资料
7:信息补全后点提交,提交后大概一小时左右就能收到证书申请成功的信息,接下来就下载证书:
去到:”管理控制台“->”产品与服务”->”个人证书“,选择”下载”
8:阿里云能根据不一样的服务器生成不一样的证书,如tomcat,apache等,选择本身所要的,以下图:
至此,”Https系列之一:https的简单介绍及SSL证书的生成”已完成。
更多内容请看:Https系列之二:https的SSL证书在服务器端的部署,基于tomcat,spring boot
更多内容,请关注微信公众号:颜家大少