admin 管理员组

文章数量: 1184232

安全

对称加密

在对称加密中,加密和解密使用的是同一个密钥,即:使用相同的密钥对密文进行加密和解密
比如:A和B,A和B保存同一个密钥,A使用这个密钥对明文进行加密,发送给B,B再使用这个密钥对密文进行解密
缺点是:如果第三个人知道了这个密钥,就能对密文进行解密
常用的对称加密算法是:
DES,3DES,IDEA等

非对称加密

举例说明:
比如Alice 要与Bob直接进行非对称加密的通信
首先Alice根据非对称加密算法,由一个庞大的随机数来生成一对密钥,为公钥public key和私钥private key,这个public key可以让任何人知道,包括Bob

然后Bob也由一个庞大的随机数,根据非对称加密算法来生成一对密钥:公钥public key, 私钥private key,同样这个public key可以让任何人知道,包括Alice

Alice和Bob使用的随机数不同,生成的公钥和私钥也不一样

一般来说私钥放在服务器里,数据经过公钥加密就只能被私钥解密
如果应用到客户端和服务器端,就是服务端自己有成对的私钥和公钥,然后公布自己的公钥让客户端知道,客户端用公钥把自己的数据进行加密,加密后要用服务端的私钥才能解密

证书

非对称加密可以对数据进行加密,但是客户端不知道沟通的服务器是否是自己想要沟通的对象
HTPPS解决这个问题,因为服务器端需要申请SSL证书,来证明自己
SSL证书其实就是保存在源服务器的数据文件,要让SSL证书生效,就需要向CA(第三方证书颁发机构)申请,证书里除了包含域名,日期等,还包括了特定的公钥和私钥,简单来说服务器端安装了SSL证书,客户端就可以使用HTTPS访问了,端口号为443
CA机构会生成一个根证书包括public key,根证书是提前安装在客户端,客户端信任这个根证书,如果服务器端安装了由这个CA机构颁发的证书,CA会对SSL证书进行签名,客户端有CA的public key,就能对CA颁发的SSL证书进行签名认证,客户端就会信任服务器

SSL证书申请流程

  1. 制作CSR文件
    CSR:certificate signning request证书请求文件,这个文件是由申请人制作,制作这个文件时会生成两个密钥:
    公钥:就是这个CSR文件
    私钥:存放在服务器上
    制作CSR文件的方法:1. 使用openssl 2.使用keytool
  2. CA认证
    将CSR提交给CA,
  3. 证书安装
    收到证书后,可以将证书部署在服务器上
    APACHE是将key(密钥)和CER(证书)直接复制到服务器上,然后修改httpd.conf文件
    TOMCAT是将CER文件(CA签发的证书)导入到JKS(密钥)中,然后修改server.xml
    文件
自签名证书

自己生成的SSL证书,不是由CA机构颁发的证书,就叫做自签名SSL证书

使用openssl生成自签名证书

安装openssl
.html

常用的openssl命令

version 用于查看版本信息

enc 用于加解密

ciphers 列出加密套件

genrsa 用于生成私钥

rsa RSA密钥管理(例如:从私钥中提取公钥)

req 生成证书签名请求(CSR)

crl 证书吊销列表(CRL)管理

ca CA管理(例如对证书进行签名)

dgst 生成信息摘要

rsautl 用于完成RSA签名、验证、加密和解密功能

passwd 生成散列密码

rand 生成伪随机数

speed 用于测试加解密速度

s_client 通用的SSL/TLS客户端测试工具

X509 X.509证书管理

verify X.509证书验证

pkcs7 PKCS#7协议数据管理

生成CA的根证书和私钥

自签名证书由于不是CA机构颁发的,所以要有证书和私钥来代替CA机构的功能
需要生成CA根证书和私钥
CA根证书安装在客户端,用户需要信任这个证书
私钥用于对服务器端的SSL证书进行签名

#创建一个文件夹ca
mkdir ca
cd ca
#使用openssl genrsa生成一个私钥,会生成一个ca.key文件
openssl genrsa -des3 -out ca.key 2048
#使用这个私钥,产生一个证书 ca.crt, -x509是证书的格式
openssl req -x509 -key ca.key -out ca.crt -days 365


#查看证书内容
openssl x509 -in ca.crt -text -noout


这样就生成了一个私钥ca.key和一个证书ca.crt

生成CSR文件,证书请求文件

申请者根据自己的公司信息,域名等生成一个CSR文件,发送给CA机构,由CA机构进行签名并生成一个证书并返会给申请者
申请者先生成一个秘钥,再有这个秘钥生成csr文件

#先生成一个秘钥
openssl genrsa -out my-site.com.key 2048
#根据这个秘钥,生成一个csr文件
openssl req -new -key my-site.com.key -out my-site.com.csr
CA机构对CSR文件进行签名,生成一个证书
openssl x509 -req -in my-site.com.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out my-site.com.crt -days 365


最后生成一个my-site.com.crt证书,这个就是安装在服务器端的证书

#查看证书内容
openssl x509 -in my-site.com.crt -text -noout

本文标签: 安全