一、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证书遵守SSL协议,通过在客户端浏览器和Web服务器之间建立一条SSL安全通道 。

一个有效、可信的 SSL 数字证书包括一个公共密钥和一个私用密钥。公共密钥用于加密信息,私用密钥用于解译加密的信息。因此,浏览器指向一个安全域时,SSL 将同步确认服务器和客户端,并创建一种加密方式和一个唯一的会话密钥。它们可以启动一个保证消息的隐私性和完整性的安全会话。

SSL证书可以实现网站HTTPS加密,适用于各种WEB项目及加密接口,SSL证书可以防止网站劫持及保护数据加密传输,可有效保护网络安全。

IP类型的SSL证书主要应用项目API接口或者ERP、OA、远程视频、VPN等请求加密及数据保护,有利于IP传输得到安全。

三、IP SSL证书

IP SSL证书可以解决企事单位的公网IP地址进行HTTPS加密请求。反正IP被劫持或者数据被中间窃取,使用IP地址SSL证书配置IP SSL证书可以有效的避免这类攻击行为。IP SSL证书给企事单位在线WEB项目站点得到了安全加密保护的有效保障。而且对于公网IP下存在很多端口应用场景一本IP证书就可以全部覆盖保护。IP SSL证书签发的速度也很快,认证一分钟就可以完成。企事单位实名类型的IP证书也只需当天就可以申请SSL证书。

四、关于自签名SSL证书

相对自签证书的自己给自己颁证,由权威的证书授权机构(Certificate Authority)颁发的签名证书,我们称之为:CA证书

CA证书保证书持有者的身份和公钥的拥有权,浏览器对CA证书是信任的。

五、注意事项

IP SSL证书分为单IP SSL证书和多IP SSL证书。普通的单IP SSL证书,只能保护一个IP SSL证书。如果存在很多IP地址需要SSL证书,那么着需要多IP类型的SSL证书,最大一本证书可以保护250个IP地址。

IP地址不支持通配符,也不支持IP段落概括性方式申请,申请IP SSL证书必须明确需要指定的独立IP。

IP类型的SSL证书,不支持EV类型申请,目前只能DV或者OV两种IP SSL证书。

申请IP SSL证书必须是公网独立IP地址,并且申请者的IP地址开放80或者443端口才可以的。

六、申请IP SSL证书整体流程

  1. 准备公网IP地址,在线提交给Gworg进行申请。申请者的IP地址确保对外广域网可以访问。

  2. 几分钟就可以确定认证后就可以获取SSL证书。

  3. 拿到IP SSL证书里面包括常见的服务器环境规格的SSL证书,可以直接配置到项目环境,不需要另外转换。

  4. IP SSL证书企事单位申请IP SSL证书的时候请确定好域名与企业名称进行实名认证审核。

  5. 目前申请IP SSL证书效率上还是比较高的,最快的IP SSL证书一分钟就可以完成

七、申请公网IP的SSL证书的方法

(一)、手动申请的方法

进入到ZeroSSL官网(网址:https://zerossl.com), 注册一个账号,然后点击免费 SSL 证书申请。
ZeroSSL

填写你的IP地址,然后选择免费SSL证书时长。
ZeroSSL

选择自动生成CSR
CSR

验证域名,ZeroSSL免费SSL证书提供了两种域名验证方式,最简单的就是Web验证,但是前提是你要让你的IP地址实现Web访问。如果没有,你可以选择使用域名DNS添加TXT记录验证。
Web验证

选择网站Web访问的话,直接下载验证文件,然后上传到IP地址默认的Web目录下,用你的浏览器打开IP,保证可以访问到验证文件。
验证文件

最后,回到ZeroSSL验证页面,点击完成验证。
ZeroSSL验证

下载证书文件,ZeroSSL证书验证成功后,你就可以下载证书文件了。ZeroSSL SSL证书提供了多种形式,包括了Nginx、Apache等。

(二)、在线自动生成ssl的方法

1、 生成网址:https://www.lddgo.net/encrypt/ssl (推荐)
在线免费SSL证书生成器,在线生成用于学习测试使用的SSL域名证书,IP证书。您可以使用生成的证书发布HTTPS的站点。

SSL证书生成-使用说明:

  1. 输入域名或者IP,生成对应的域名证书或者IP证书。你也可以生成通配符证书, 比如*.example.com。
  2. 算法:选择加密算法,支持RSA和ECDSA两种证书算法。一般使用RSA算法。
  3. 存储类型:当你下载证书时,证书会使用PKCS12格式存储,你需要输入存储密码和证书别名。默认的证书存储密码为lddgo.net。
  4. 下载:一个zip压缩文件,其中包含四个文件:
    cert.pem:证书,pem格式。
    private.key:私钥,pem格式。
    generate.cer:证书,cer格式。
    generate.P12:PKCS12格式存储的证书,包含私钥。
    当你使用nginx部署网站时,使用cert.pem和private.key两个文件即可。 如果你需要其他格式的证书,可以使用openssl等工具转换。

2、 其他网址推荐:
https://freessl.cn/ (推荐)
https://www.pianyissl.com/
https://certbot.eff.org/

推荐第一个,第一个,因为太强了,差不多五分钟搞定,第一个生成工具的使用过程如下:

先注册登录https://freessl.cn/

然后在下图地址中输入自己的域名
freessl

选择一键申请,点击创建
申请freessl

会让下载一个软件,下载即可,下载完毕后重新点击创建。
进入该软件,配置DNS解析商,以腾讯云为例,需要SecretId
DNS解析

新建密钥后填入即可,然后点击一键生成就行了。

需要注意的是,使用一键部署(Nginx),虽然显示成功,但是实际上没有成功。(不过的确通过一键部署功能将证书都上传到了服务器指定位置)

需要手动修改nginx配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
server {
listen 443 ssl default_server;
server_name _;
ssl_certificate "/etc/ssl/cert.pem";
ssl_certificate_key "/etc/ssl/cert.pem";
ssl_session_cache shared: SSL: 1 m;
ssl_session_timeout 10m;
location /
{
root /home/www/test-h5;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
location /api/
{
proxy_pass http://192.168.0.251:8301/;
proxy_redirect default;
}
}

打开浏览器,用https://能够正常访问