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:    hex:16进制编码    #:长度]# 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]:CNState or Province Name (full name) []:Beijing Locality Name (eg, city) [Default City]:BeijingOrganization Name (eg, company) [Default Company Ltd]:ClassOrganizational Unit Name (eg, section) []:OpsCommon Name (eg, your name or your server‘s hostname) []:www.zjj.comEmail 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]:CNState or Province Name (full name) []:BeijingLocality Name (eg, city) [Default City]:BeijingOrganization Name (eg, company) [Default Company Ltd]:Class Organizational Unit Name (eg, section) []:OpsCommon Name (eg, your name or your server‘s hostname) []:www.eva.comEmail Address []:...

    将请求发送至CA主机:]# scp ../ssl/httpd.csr  10.1.235.7:/
    在CA主机上签署:CentOS 7,10.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.crtSSLCertificateKeyFile /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中可以将证书导入为受信任的根证书

时间: 2024-10-14 15:53:48

openssl+http实现https的相关文章

配置openssl以支持Https访问

一.Windows + apache 下,  软件是xampp 说明:参考(http://blog.sina.com.cn/s/blog_5d7dbbdd0101042n.html) 1. 将证书生成的配置文件(http://tud.at/programm/openssl.cnf) 复制到 apache/conf/sslwork/openssl.cnf 2. cmd进入apache/bin目录(必须是 openssl.exe 所在目录). E:\mySoft\xampp\apache\bin>o

OpenSSL/Tomcat HTTPS 搭建

总结一下 OpenSSL和Tomcat  https的搭建 第一部分:首先是看看 OpenSSL的搞法: 创建证书的步骤: (1)生成私钥 (2)生成待签名证书 (3)生成x509证书, 用CA私钥进行签名 (4)导成浏览器支持的p12格式证书 一:生成CA证书CA 1. 创建私钥 :openssl genrsa -out ca/ca-key.pem 1024 2.创建证书请求 :openssl req -new -out ca/ca-req.csr -key ca/ca-key.pem 3.自

基于源码编译openssl

openssh依赖于openssl,由于ssl频繁曝出漏洞,牵扯到openssh.而自身也存在漏洞... 00.下载openssl https://www.openssl.org/source/ https://github.com/openssl/openssl/releases https://www.openssl.org/source/openssl-1.0.2l.tar.gz 01.准备工作 yum -y install perl perl-devel gcc gcc-c++ 02.编

编译并导入OpenSSL

1. 首先,需要运行脚本生成OpenSSL库,参考 https://github.com/x2on/OpenSSL-for-iPhone 示例 2. 运行脚本生成静态库 下一步我们会用到这两个文件夹中的内容 3. 新建一个文件夹叫 openssl ,然后将 OpenSSL-for-iPhone 项目中的 FSOpenSSL.h/m 文件拖到文件夹中,将生成的 include 以及 lib 文件夹也拖到 openssl 文件夹中. 结构如下图所示 4. 将整个文件夹 openssl 拖到新建的项目

C++模拟Http/Https POST登录web站点

C++模拟Http/Https访问web站点 一.概述 1.Http与Https的区别与联系 在OSI参考模型中Http与Https均属于应用层协议.Http即Hypertext Transfer Protocol,超文本传输协议:而Https为Secure Hypertext Transfer Protocol安全超文本传输协议,它是一个安全通信通道,基于HTTP开发,用于在客户端与服务器之间交换信息,它使用安全套接字层SSL进行信息交换,简单来说它就是HTTP的安全版. Http默认使用80

PHP如何抓取https内容?记录一下。

PHP里做一般的获取内容时,用自带的file_get_contents()函数基本就足够了.当然,这个函数只能抓一些简单的数据,如果是遇到需要登录的页面,就不行了,而且效率及稳定性也不是很强.所以要是有特殊需求的话,还是用curl吧.不仅仅速度快,而且非常稳定,基本上用curl抓取失败的几率很小. 而且今天在抓优酷视频API接口中的信息时,发现了一个问题,由于优酷API的url请求是https安全协议,用file_get_contents()函数竟然无法获取到数据,然后用curl写了个代替函数,

CentOS6.5的openssl升级

CentOS6.5的openssl升级:(修复心脏漏血漏洞) [[email protected] ~]# rpm -qi openssl|grep VersionVersion : 1.0.1e Vendor: CentOS openssl升级:OpenSSL 需要更新至1.0.2g或1.0.1syum update "openssl*" #没有更新版本 使用源码安装openssl:wget https://www.openssl.org/source/openssl-1.0.1g.

加密解密数据安全1 OpenSSL 安装

加密解密数据安全1  OpenSSL 安装 OpenSSL官方网站:https://www.openssl.org/source/ 解压,编译,安装 解压OpenSSL [email protected]:~ $ cd openssl/ [email protected]:~/openssl $ tar xf openssl-1.1.0 [email protected]:~/openssl $ cd openssl-1.1.0/ 编译环境检查 [email protected]:~/opens

使用Openssl 构建私有CA

环境准备:  一.准备两台测试机,CA服务器ip地址是192.168.10.103,证书申请者ip是192.168.10.120  二.确保Linux主机以安装openssl软件包,可以使用rpm查看  三.确保有openssl加密功能组件: openssl(多功能命令工具).libcrypto(公共加密库).libssl(SSL协议的实现) Openssl构建私有CA:  一. 构建私有CA:      1.生成私有秘钥 命令解释: # (umask 077; openssl   genrsa