Https系列会在下面几篇文章中分别作介绍:

一:https的简单介绍及SSL证书的生成
二:https的SSL证书在服务器端的部署,基于tomcat,spring boot
三:让服务器同时支持http、https,基于spring boot
四:https的SSL证书在Android端基于okhttp,Retrofit的使用

所有文章会优先在:
微信公众号“颜家大少”中发布
转载请标明出处


一:本文的主要内容介绍

https的介绍
SSL证书的介绍
自签名SSL证书介绍及生成方法
CA证书介绍及申请

二:https的简单介绍

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL(Secure Socket Layer)。

SSL协议提供的服务主要有:
1)认证用户和服务器,确保数据发送到正确的客户机和服务器
2)加密数据以防止数据中途被窃取
3)维护数据的完整性,确保数据在传输过程中不被改变

关于https的介绍,网上有很多更详细更专业的资料,在此只作简单介绍,让大家有一些概念性的了解,并最终完成android端和服务器端的https的实现。

三:SSL证书的作用

SSL证书是数字证书的一种,类似于驾驶证、护照和营业执照的电子副本。
SSL证书的两大作用:数据加密和身份认证
SSL 证书遵守 SSL协议,通过在客户端浏览器和Web服务器之间建立一条SSL安全通道
一个有效、可信的 SSL 数字证书包括一个公共密钥和一个私用密钥。公共密钥用于加密信息,私用密钥用于解译加密的信息。因此,浏览器指向一个安全域时,SSL 将同步确认服务器和客户端,并创建一种加密方式和一个唯一的会话密钥。它们可以启动一个保证消息的隐私性和完整性的安全会话。

四:关于自签名SSL证书

所谓自签名证书,就是自己颁发给自己的证书 ,所以颁证的主体是不可信任的
自签证书是不会被浏览器信任的证书的,用户在访问自签证书时,浏览器会警告用户此证书不受信任,需要人工确认是否信任此证书,如下图:

既然自签证书是不可信任的,那为何还有人包括12306也在用自签证书呢?
主要原因是:
1)自签证书是免费的
2)自签证书相对申请CA证书,流程更简单
3)自签证书同样可以对数据进行加密
4)自签证书的有效期可以设置很长,免去续签的麻烦
5)自签证书更方便测试,比如说你想生成多少个不同服务器ip的都可以
所以对于一些个人开发者来说使用自签证书可能会更方便,只要你能接受别人浏览你网站时弹出的提醒:不安全

五:关于CA 签名SSL证书

相对自签证书的自己给自己颁证,由权威的证书授权机构(Certificate Authority)颁发的签名证书,我们称之为:CA证书
CA证书保证书持有者的身份和公钥的拥有权
浏览器对CA证书是信任的,如下图:

六:自签名SSL证书的生成

自签证书虽然提示:不安全。但还是有很多上面已提到的好处,所以下面先说说自签证书的生成,主要使用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证书又分免费和不同价钱的,当然一分钱一分货,对于我们个人开发者来说,免费的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


更多内容,请关注微信公众号:颜家大少

Https系列之一:https的简单介绍及SSL证书的生成的更多相关文章

  1. 我是如何将网站全站启用Https的?-记录博客安装配置SSL证书全过程

    评论»   文章目录 为什么要Https 如何选择Https 安装部署SSL证书 平滑过渡Https 搜索引擎的响应 启用Https小结 正如大家所看到的,部落全站已经启用了Https访问了,连续几天 ...

  2. HTTP协议系列(3)---包括WebSocket简单介绍

    一.HTTPS     HTTP是超文本传输协议,那HTTPS是什么尼?要明白HTTPS是什么先要明白HTTP的缺点,想一下我们在使用HTTP的时候会有那些缺点尼? 1.通信使用的明文(不加密),内容 ...

  3. https多网站1个IP多个SSL证书的Apache设置办法

    这些天接触了解SSL证书后,写了一篇<申请免费的SSL证书,开通https网站>博文,其中简单记录了Apache的设置,后来又涉及到多个域名.泛域名解析.通配符SSL证书.单服务器/多服务 ...

  4. 简单的制作ssl证书,并在nginx和IIS中使用

    2020年最后一篇博文收官,提前祝各位园友新年快乐 现在的后端开发,动不动就是需要https,或者说是需要ssl证书,既然没有正版的证书,那么我们只能自己制作ssl的证书了. 说明:证书的制作采用的是 ...

  5. 【多线程系列】AQS CAS简单介绍

    一.什么是CAS CAS(Compare And Swap),即比较并交换.是解决多线程并行情况下使用锁造成性能损耗的一种机制,CAS操作包含三个操作数——内存位置(V).预期原值(A)和新值(B). ...

  6. Robotium 系列(2) - 简单介绍Monkey和MonkeyRunner

    除了Robotium,Android还有其他的自动化测试方法,比如Monkey和MonkeyRunner. 这里就做一个简单的介绍和使用方法. 本文提纲: 1. Android SDK以及SDK中的工 ...

  7. Docker系列(一):Docker简单介绍

    Docker简介: 多语言和框架:支持多语言和框架以及语言框架的扩展机制 多服务:开放的核心服务以及服务的扩展机制 多云和多IaaS技术:支持多种IaaS技术和多云的部署,包括公有云和私有云 Dock ...

  8. Https系列之二:https的SSL证书在服务器端的部署,基于tomcat,spring boot

    Https系列会在下面几篇文章中分别作介绍: 一:https的简单介绍及SSL证书的生成二:https的SSL证书在服务器端的部署,基于tomcat,spring boot三:让服务器同时支持http ...

  9. Https系列之三:让服务器同时支持http、https,基于spring boot

    Https系列会在下面几篇文章中分别作介绍: 一:https的简单介绍及SSL证书的生成二:https的SSL证书在服务器端的部署,基于tomcat,spring boot三:让服务器同时支持http ...

随机推荐

  1. Java入门——学会使用API

    API是什么? API(Application Programming Interface)就是别人写的代码使用说明书. 下面是中文版API的使用具体截图. 1.左上角有个显示(图中"隐藏& ...

  2. 初识SVN-版本控制工具

    慕课网安装教程链接:http://www.imooc.com/video/1924

  3. python代码`if not x:` 和`if x is not None:`和`if not x is None:`

    转自 http://blog.csdn.net/sasoritattoo/article/details/12451359 代码中经常会有变量是否为None的判断,有三种主要的写法: 第一种是`if ...

  4. asp.net core策略授权

    在<asp.net core认证与授权>中讲解了固定和自定义角色授权系统权限,其实我们还可以通过其他方式来授权,比如可以通过角色组,用户名,生日等,但这些主要取决于ClaimTypes,其 ...

  5. wifi pineapple 外接USB无线网卡桥接外网

    0:选择USB网卡 在没有有线网络的情况下,可以外挂一个usb无线网卡来桥接上网,目前支持3070L.8187L芯片的网卡,反正linux系统都用这些芯片, 免的安装驱动, 我选择的是 WN-722N ...

  6. MySQL常见的三种存储引擎(InnoDB、MyISAM、MEMORY)

    简单来说,存储引擎就是指表的类型以及表在计算机上的存储方式. 存储引擎的概念是MySQL的特点,Oracle中没有专门的存储引擎的概念,Oracle有OLTP和OLAP模式的区分.不同的存储引擎决定了 ...

  7. javascript学习笔记-2:jQuery中$("xx")返回值探究

    最近在写一个jQuery插件的时候,需要用到一个条件: 一组img标签,每一个元素都需要被它前面的元素值src替换,如果是第一个(序列为0)则其值为最后一个元素值,如果是最后一个,那么其值为第一个元素 ...

  8. Java Spring的简单见解

    Spring的注解特性,IOC控制反转 首先了解依赖注入是什么,就是在实例化对象的时候并不需要每次都new对象出来,spring管理对象,在你配置been或者@service时候 Spring会自动帮 ...

  9. 这是一款借助chrome 插件的微信机器人

    1.chrome kit微信机器人简介 借助chrome 插件 js注入来实现消息的发送 chrome devtool api的调用来监听https请求 打开微信登录界面,在扫码登录前必须先打开too ...

  10. [js高手之路]Vue2.0基于vue-cli+webpack Vuex用法详解

    在这之前,我已经分享过组件与组件的通信机制以及父子组件之间的通信机制,而我们的vuex就是为了解决组件通信问题的 vuex是什么东东呢? 组件通信的本质其实就是在组件之间传递数据或组件的状态(这里将数 ...