基于ssl协议和openssl工具建立私有CA

前言

要自建CA需先了解openssl工具和ssl协议还有各加密类型

ssl(Secure Socket Layer)安全套接字层当前版本为3.0,浏览器与Web服务器之间的身份认证和加密数据传输,它工作在传输层和各应用层之间,用户可以选择是否使用ssl进行传输,选择ssl协议将调用ssl函数库,端口也会发生变化。

加密类型

对称加密:任意加密数据块和流的内容,加密和解密用同一个密码, 通常明文通过算法和密钥生成密文,再由接受者用相同的密钥和算法解密获取明文。

算法:(DES、3DES、AES现在使用比较广、Blowfish、Twofish、IDEA、RC6、CAST5)
              特性:加密、解密使用同一口令。将明文分割成固定大小块,逐个进行加密
              缺陷:密钥过多、密钥传输不安全、密钥交换、身份验证。

公钥加密:公钥和私钥是成对出现的,公钥包含在私钥中,公钥称为public key、私钥为secret key,由发起者对接受者索要公钥,用公钥加密数据后发送给接受者,接受者用算法和私钥解密

缺陷:加密、解密时间过长一般不用于简单通信

单项加密:单项机密也叫数据完整性校验,抽取数据特征码和之前特征码作比较以确保数据没有被窜改

认证协议:用来确定通信方的真实性。

ssl会话模型

发起者用单项加密获取数据特征码,用自己的私钥计算特征码附加在数据后面,在用对称加密对整个包(数据和特征码)进行加密,并用对方公钥加密对称加密密码,附加在整个包中一并发给对方。接受者用自己的私钥解密获取对称加密密码,得到密码后解密整个包获得数据和特征码,在用相同的算法计算特征码,用对方的公钥解密数据验证对方身份,用对方计算结果(特征码)和解析结果(特征码)进行对比,来验证数据的完整性。

openssl工具

      对称加密工具openssl enc

openssl命令选项:
                   -e:指定为加密,可以不写默认为加密。
                   -des3:指定算法算法
                   -salt:默认设置,生成一段字符串放在密码最前面进行加密,提高解密难度。
                   -a:基于base64处理数据。加密结果进行base64编码处理
                   -in:读取那个文件进行加密
                   -out:输出到那里
                   -d:指定为解密

案例如下:

加密文件:openssl enc -e -des3 -a -salt -in test.sh -out ./test.txt
                   解密文件:openssl enc -d -des3 -a -salt -in test.txt -out ./test.sh

单项加密:openssl dgst

-md5:用md5方式加密
                  -sha1:sha1方式加密
                  -out:加密后密码保存到那里

案例如下:

openssl dgst -md5 test.sh 或openssl dgst -md5 -out ./123a test.sh

openssl dgst -sha1 test.sh

用户密码:openssl passwd

-1:md5加密、
                  -salt:自己指定附加信息。

生成随机数:openssl rand -base64 4或openssl rand -hex 4,生成8位随机数

案例如下:

openssl passwd -1 -salt `openssl rand -base64 4` 123456

生成私钥和公钥:openssl genrsa

案例如下:

(umask 077;openssl genrsa -out ./mykey 2048)生成只有当前用户可读的2048字节mkkey私钥文件

openssl rsa -in ./mykey -pubout,-pubout根据私钥文件提取公钥

建立私有CA:

服务器端:

生成密钥

自签证书

初始化工作环境

节点:

生成密钥对儿

生成证书签署请求

把请求发送给CA

CA服务器:

验正请求者信息:自建CA无需该步骤

签署证书

把签好的证书发送给请求者

服务器端自建CA

生成密钥:

(umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)

自签证书:

req: 生成证书签署请求
             -news: 新请求
             -key /path/to/keyfile: 指定私钥文件
             -out /path/to/somefile:输出文件到那里
             -x509: 生成自签署证书
             -days n: 有效天数
             openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3655

 详细记录证书创建时所填信息如不一致签署将失败。建议修改openssl.conf文件发给每个申请节点

初始化工作环境:
             touch /etc/pki/CA/{index.txt,serial}:创建相关文件
             echo 01 > /etc/pki/CA/serial。只需第一次创建序列号

节点申请证书:

       生成密钥:

(umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)

生成证书签署请求:

openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr

把签署请求文件发送给CA服务

CA服务器签署证书: 
                  签署证书:

openssl ca -in /path/to/somefile.csr -out /path/to/somefile.crt -days N
         发送给请求者:

CA证书验证会话模型

在基于tcp/ip协议建立后,服务端会把ca证书发送给客户端,客户端得到证书后通过ca公钥进行解密ca签名,能解密证明该证书是可信任的、把解密出来的数据和重新计算出来的特征码对比对确保完整性、之后验证主机的名称和申请者名称是否相同,验证通过后客户端会取得服务器端公钥信息,客户端用公钥生成个一次性的对称加密密码发给服务器端。服务器端获取密码后加密网页数据发给客户端。

以上为建立CA大致流程,如有遗漏请告知。

时间: 2024-10-05 23:03:03

基于ssl协议和openssl工具建立私有CA的相关文章

ssl协议、openssl及创建私有CA

在互联网发展早期,NetSpace公司发明了第一个浏览器及Web服务器.而http协议传输数据是明文的,为了基于加密的机制实现http,NetSpace公司在TCP层和应用层之间引入了半个层,这半层就是SSL.SSL不是一个软件,可以将它理解为一个库.当应用层的某种协议如果传输数据之前调用了SSL的功能,那么这个协议就实现了加密的功能.例如:http协议本身是不加密的,数据在应用层封装完之后本来应该交给传输层,但由于NetSpace在TCP层和应用层之间加入了SSL层,而SSL本身就是实现数据通

14 Linux之openssl工具创建私有CA

证书的创建依赖加密算法,请看http://yunweigou.blog.51cto.com/6299641/1637108 前言,随着网络的发展,由于使用http协议通信的双方数据是明码格式的,故容易被其他网络主机盗取或偷换数据,无法对数据的安全提供保障.为保证数据的保密性及完整性,SSL问世 SSL:Secure Sockets Layer 安全套接字层 可理解为传输层和应用层之间的半层,对数据进行加密和解密 是Web浏览器与Web服务器之间安全交换信息的协议,提供两个基本的安全服务:鉴别与保

加密、解密以及OpenSSL建立私有CA

OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法.常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用.大多数开源程序,商业软件加密核心都是基于openssl实现的. 数据安全性的基本法则: (1)数据的保密性:信息加密就是把明码的输入文件用加密算法转换成加密的文件以实现数据的保密.加密的过程需要用到密钥来加密数据然后再解密.没有了密钥,就无法解开加密的数据.数据加密之后,只有密钥要用一个安全的方法传送.加密过的数据可以公开地传送. (2)完整性:

加密、解密,以及OpenSSL建立私有CA

概述: 理论部分主要介绍了: 对称加密.非对称加密.单向加密.密钥交换.CA.PKI 操作部分主要有: 对称加密.非对称加密.单向加密的实现,已经openssl常用功能,生成密码.生成随机数已经使用openssl创建私有CA 系统环境说明: [[email protected] ~]# cat /etc/redhat-release  CentOS release 6.6 (Final) [[email protected] ~]# uname -rm 2.6.32-504.el6.x86_64

加密、解密   以及OpenSSL建立私有CA

加密.解密,以及OpenSSL建立私有CA 加密技术是互联网最常用的安全保密手段,其利用技术手段把重要的数据加密后传送,到达目的地后再用相同或不同的手段进行解密. 加密技术包括两个元素:算法和密钥 常用的加密技术:对称加密.非对称加密.单向加密 以上几种加密技术各有千秋,经常组合起来使用 1.对称加密 加密和解密使用同一个密钥,将明文分隔成固定大小的块,逐个进行加密: 常见算法:DES  3DES  Twofish  IDEA  IDEA  CAST5  RC6 Blowfish 2.非对称加密

OpenSSL建立私有CA

yum安装OpenSSL: 提示已经安装过了. openssl的主配置文件:/etc/pki/tls/openssl.cnf [CA_default] dir:CA的主目录 certs:已颁发证书的存储位置 crl_dir:已吊销证书的存储位置 database:证书索引文件 new_certs_dir:新颁发证书的存储位置 certificate:CA证书文件 serial:证书颁发时的当前序列号 crlnumber:吊销证书的当前序列号 crl:当前使用的CRL private_key:CA

OpenSLL之建立私有CA

一.CA证书的格式 数字证书的格式(x.509 v3): 版本号(version) 序列号(serial number):CA用于惟一标识此证书: 签名算法标志(Signature algorithm identifier) 发行者的名称:即CA自己的名称: 有效期:两个日期,起始日期和终止日期: 证书主体名称:证书拥有者自己的名字 证书主体公钥信息:证书拥有者自己的公钥: 发行商的惟一标识: 证书主体的惟一标识: 扩展信息: 签名:CA对此证书的数字签名: 二.建立自己的CA 使用OpenSS

ansible 部署基于centos7+docker+nginx+openssl+v2版私有仓库

ansible 部署基于centos7+docker.1.12+nginx+openssl+v2版私有仓库 1.申请域名证书不做详细教程网络上很多 2.ansible-playbook 结构 . ├── hosts # 需要安装服务器IP地址 ├── roles │   ├── docker │   │   ├── defaults │   │   ├── files │   │   │   └── dockerkey #证书 文件加 │   │   │       ├── domain.crt

ssl协议相关总结和创建私有CA过程

数据安全的相关术语: NIST规定安全协议的应该具备的特性: 保密性: 数据保密性 隐私性 完整性: 数据完整性 系统完整性 可用性: 安全攻击: 被动攻击:窃听 主动攻击:伪装.重放.消息篡改.拒绝服务 安全机制: 加密.数字签名.访问控制.数据完整性.认证交换.流量填充.路由控制.公证 安全服务: 认证. 访问控制. 数据保密性. 链接保密性 无连接保密性 选择域保密性 流量保密性 数据完整性 不可否认性 密码算法和协议: 对称加密 公钥加密 单向加密 认证加密 所谓的数字签名就是事先用单向