openssl+http实现https

openssl详解及实现https

openssl详解及实现https

OpenSSL 是一个安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。

秘钥算法和协议:

  • 对称加密:
    加密和解密使用同一个密钥,原始数据分成固定大小块,算法不同
    秘钥过多,秘钥分发困难
    DES,3DES  AES  Blowfish  Twofish  IDEA  RC6 CAST5

  • 公钥加密:
       分公钥与私钥
           公钥:从私钥中提取产生,可公开给所有人;pubkey
           私钥:通过工具创建,使用者自己留存保证其私密性;secret key
       数字签名:(私钥加密的特征码)接受方确认发送方身份
       秘要交换:发送方用对方公钥加密一个对称秘钥 发送给对方
       数据加密:不常用公钥进行数据加密 慢,RSA,DSA

    发送方:

    接收方:

  1. 用自己的私钥解密对称秘钥

  2. 用对称秘钥解密整段数据–保密性

  3. 用发送方的公钥解密特征码–验证发送方身份

  4. 计算特征码与接收的特征码作比较–保证数据完整性
    可能出现中间人。要可靠的拿到对方公钥:CA

  1. 计算数据的特征码

  2. 用自己的私钥加密这段特征码

  3. 生成临时对称秘钥(一次性),用其加密整段数据(包括加密的特征码)

  4. 用接收方的公钥加密临时对称秘钥附加在数据后

单向加密: 提取数据指纹,只能加密不能解密 定长输出,雪崩效应 保证数据完整性 算法: md5  固定128位输出 sha1 160,224,256,384,512

秘要交换:公钥交换
 DH:利用 已知大质数的高次方的结果   反求次方极难
 协商生成p,g   本机生成x,将 p^x%g 的结果发送
 接收方本机生成y   求 (p^x%g)^y   对方 (p^y%g)x  结果相同
 RSA ECDH ECDHE

PKI: Public Key Infrastructure

  • 签证机构:CA(Certificate Authority)
    注册机构:RA
    证书吊销列表:CRL
    证书存取库:

X.509:定义了证书的结构以及认证协议标准

  • 版本号
    序列号
    签名算法
    颁发者
    有效期限
    主体名称
    主体公钥
    CRL分发点
    扩展信息
    发行者签名

SSL: Secure Socket Layer
TLS: Transport Layer Security

数据保密性
数据完整性
安全验证


OpenSSL:开源项目,三个组件

  • openssl: 多用途的命令行工具

  • libcrypto: 加密算法库

  • libssl:加密模块应用库,实现了ssl及tls

# openssl
标准命令,消息摘要命令,加密命令

openssl enc
   -e:加密
   -d:解密
   -a:文本编码格式
   -salt:盐
   -in:要处理的文件
   -out:要输出的文件
]# openssl enc -e -rc4 -a -salt -in fstab -out fstab.en 加密

单向加密:计算特征码

openssl dgst -   FILE
   md2 md4 md5 rmd160  sha sha1

]# md5sum FILE
]# openssl dgst -md5 FILE   md5加密

生成用户密码:

openssl passwd -1 -salt SALT

生成随机数:

openssl rand [base64|hex] #
   base64:
   hex16进制编码
   #:长度
]# openssl rand -base64 10  使用时去掉尾部两个“==”
GyA/hYBNH20RAQ==

https:http+openssl

环境:
Web:CentOS 6.8,10.1.235.6
CA:CentOS 7,10.1.235.7
关闭防火墙及selinux

CentOS 7,10.1.235.7:
建立私有CA:

    生成私钥:指定位置
]# (umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096)
   生成字签证书:
]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3650
   -new:生成新证书签署请求
   -x509:生成自签格式证书,用于创建私有CA,其它情况不加
   -key:生成请求时用到的私钥路径
   -out:生成的请求文件路径,若自签操作将直接生成签署过的证书
   -days:证书的有效时长
...
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:Beijing
Locality Name (eg, city) [Default City]:Beijing
Organization Name (eg, company) [Default Company Ltd]:Class
Organizational Unit Name (eg, section) []:Ops
Common Name (eg, your name or your server's hostname) []:www.zjj.com
Email Address []:

创建所需文件:
]# touch /etc/pki/CA/{serial,index.txt}
]# echo 01 > /etc/pki/CA/serial

CentOS 6.8,10.1.235.6:
安装配置http服务:

安装http及mod_ssl模块
]# yum install httpd mod_ssl
]# vi /etc/httpd/conf/httpd.conf
#ServerName www.example.com:80
取消注释更改 ServerName www.zjj.com:80

DocumentRoot "/var/www/html"
注释该行 #DocumentRoot "/var/www/html"
保存退出

生成证书请求:

]# mkdir /etc/httpd/ssl
]# cd /etc/httpd/ssl

   生成私钥:
]# (umask 077;openssl genrsa -out  httpd.key 2048)

   生成证书请求:
]# openssl req -new -key httpd.key -out httpd.csr
...填入相关内容
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:Beijing
Locality Name (eg, city) [Default City]:Beijing
Organization Name (eg, company) [Default Company Ltd]:Class
Organizational Unit Name (eg, section) []:Ops
Common Name (eg, your name or your server's hostname) []:www.eva.com
Email Address []:
...

   将请求发送至CA主机:
]# scp ../ssl/httpd.csr  10.1.235.7:/
    在CA主机上签署:CentOS 710.1.235.54
]# openssl  ca -in httpd.csr -out httpd.crt -days 365
   将证书发送至Web主机
]# scp httpd.crt  10.1.235.6:/etc/httpd/ssl

Web主机配置ssl,找到以下两行,更改对应的证书及私钥文件:

]# vi /etc/httpd/conf.d/ssl.conf

SSLCertificateFile /etc/httpd/ssl/httpd.crt
SSLCertificateKeyFile /etc/httpd/ssl/httpd.key

在虚拟主机标签内添加:
Documentroot /virtual
<Directory /virtual>
   Options None
   AllowOverRide None
</Directory>

]# mkdir /vitual
]# vi /virtual/index.html   创建首页文件
<center>https from 10.1.235.6</center>

测试:

/etc/hosts文件中添加一条域名解析
10.1.235.6  www.eva.com

可以在Cent 7上指定证书访问:未指定证书访问https会报错
]# curl --cacert /etc/pki/CA/cacert.pem https://www.eva.com
<center>https from 10.1.235.6</center>

windows中可以将证书导入为受信任的根证书

原创文章,作者:KBBHE,如若转载,请注明出处:http://www.wangzhanshi.com/n/16566.html

(0)
KBBHE的头像KBBHE
上一篇 2025年1月2日 12:39:21
下一篇 2025年1月2日 12:39:23

相关推荐

  • 网站证书错误怎么办

    有一部分人经常使用谷歌浏览器浏览网页,因为大多数用户对其流畅的界面和体验感到满意。但是,在Google Chrome浏览器上浏览SSL安全网站时,有时您可能会遇到网站证书错误,一般…

    2025年1月2日
  • openssl常用加密算法有哪些

    1、对称加密算法 所谓对称,就是采用这种加密方法的双方使用方式用同样的密钥进行加密和解密。密钥是控制加密及解密过程的指令。算法是一组规则,规定如何进行加密和解密。 分类 常用的算法…

    ssl证书 2025年1月2日
  • 域名ssl证书该放在哪个目录比较好

    ssl证书现在大家都听说过,但是对这个也不是特别清楚,毕竟这个我们属于一个隐形的一个保护,所以说我们这些只知道一个皮毛的人,肯定对这个也不是特别了解. 一、域名ssl证书应该放哪个…

    2025年1月2日
  • 怎样购买ssl证书

    越来越多人会使用网络,那么,我们的网络安全,必须要受到重视,在全网使用HTTPs,过程中,网站中部署了ssl证书和https是必须要拥有的了,但是现在我们的网络市场中https证书…

    2025年1月2日
  • openssl rc5 ecb模式

    ECB(Electronic Code Book)/电码本模式原理非常简单数据按照8个字节一段进行加密或解密得到一段8个字节的密文或者明文,最后一段不足8个字节,按照需求补足8个字…

    ssl证书 2025年1月2日
  • SuSe 11以编译安装的方式升级OpenSSH、OpenSSL及依赖问题解决

     OpenSSH    OpenSSH是实现远程控制、远程加密传输数据的安全的网络连接工具,也就是为我们提供ssh服务的程序。SSH由服务端和客户端组…

    ssl证书 2025年1月2日
  • 关于iis免费ssl证书的简介

    互联网信息服务全称为Internet Information Services,简称iis,使用iis浏览器可以做到浏览及时新闻、收发email、处理文件、信息传递等功能,对于用户…

    2025年1月2日
  • SSL证书和CA证书有什么不同

    SSL证书和CA证书的区别 SSL证书和CA证书区别是什么?相信很多的人会问到这个问题,下面小编来给大家分析一下。SSL是CA证书中的一种,为什么这么说呢?因为CA证书是CA机构管…

    2025年1月2日
  • ssl双向认证有什么好处,认证流程是什么

    ssl是一种数字证书,这是安全证书的一种,很多网站当中都会配置该证书,因为这种证书配置到网站服务器当中去之后,就可以有很多的作用。另外,这种证书一般都是双向认证的,而且认证之后有一…

    2025年1月2日
  • SSL证书的费用是多少?

    SSL证书的费用是多少?很多人在决定安装SSL证书之前,都会问这个问题,但SSL证书的具体费用其实很难回答,因为,首先SSL证书的品牌就有很多,常见的有DigiCert、Syman…

    ssl证书 2025年1月2日

发表回复

登录后才能评论