前言
最近项目的Restful接口开发的差不多了,要支持https请求,那就需要一个SSL证书,准备去狗爹上看看有没有便宜点的,自己买个试试。看了一眼(如下图),还是应该自己动手丰衣足食。
基础知识
-
SSL
SSL证书也叫安全证书或者数字证书,SSL证书是数字证书的一种,跟驾驶证、护照、营业执照电子副本类似。SSL证书是一种国际通用的Web安全标准,主要通过对敏感数据加密来防止各种攻击非法读取重要信息,保证数据的完整性和安全性,避免受到数据劫持和钓鱼攻击等。
-
HTTPS
HTTPS (全称:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 。HTTPS 在HTTP 的基础下加入SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。
-
CA机构颁发SSL证书
CA(Certificate Authority)就是电子认证的意思。权威可靠的CA机构有挺多的,比如国外的有:Comodo、RapidSSL、GeoTrust,国内的有:CFCA(中国人民银行联合12家银行建立的金融CFCA安全认证中zhi心)、CTCA(中国电信认证中心)
CA机构颁发SSL证书是受信任的SSL证书,会被浏览器信任认可,安全加密服务与安全扫描相关CA配套服务。 -
自签名SSL证书
自己生成的SSL证书,不是CA机构颁发的SSL证书,就是自签名证书。自签名SSL证书不会被浏览器信任,数据被泄漏级劫持安全漏洞安全风险较高。可以在PC上安装自签名SSL证书对应的公钥证书,使浏览器信任认可。
自签名的SSL证书也存在一些安全隐患:
最容易受到SSL中间人攻击
支持非常不安全的SSL V2.0协议
使用不安全的1024位非对称密钥对
-
cer证书和pfx证书:
项目的入口网关需要一张pfx证书,pfx证书同时包含了公钥信息和私钥信息。cer证书只包含公钥信息,提供给客户端使用。
openssl生成自签名证书
Linux系统自带openssl,可以登录任意Linux系统的机器操作。
主要步骤如下:
第一步:生成RSA私钥
openssl genrsa -des3 -out private-rsa.key 1024
- -des3:生成的密钥使用des3方式进行加密。
- -out private-rsa.key:将生成的私钥保存至private-rsa.key文件。
- 1024为要生成的私钥的长度。
执行命令后,需要输入保护私钥文件的密码(输入密码即可,一般不超过6位)
openssl req -new -x509 -key private-rsa.key -days 3650 -out public-rsa.cer
- -new :说明生成证书请求文件
- -x509 :说明生成自签名证书
- -key :指定已有的秘钥文件生成秘钥请求,只与生成证书请求选项-new配合。
- -days:证书有效天数
- -out :-out 指定生成的证书请求或者自签名证书名称
执行命令后,需要输入证书的相关信息。
有两点需要注意
- 第一个标红处输入上一步保护私钥文件的密码
- 第二个标红处一定要输入使用pfx证书的服务器的IP
openssl pkcs12 -export -name test-alias -in public-rsa.cer -inkey private-rsa.key -out user-rsa.pfx
- -export:指定了一个PKCS#12文件将会被创建。
- -name:指定证书的名称。
- -in:指定公钥和证书读取的文件。
- -inkey:指定私钥文件的位置。
- -out:指定输出的pkcs12文件
执行命令后,需要输入第一步保护私钥文件的密码以及导出密码。
第四步:使用证书
至此,就会在当前目录下生成了三个证书文件,pfx证书上传到需要使用证书的服务器上使用,公钥证书交给客户端使用。