一、SSL/TLS

SSL又被称之为安全的套接字层(Secure Socket Layer),一种安全的加密协议,是嵌套在应用层与传输层之间的一个半层。用户在浏览器中需要加密的时候输入https,则数据通过该半层进行加密。不需要加密的时候则输入http,数据不经过该半层。

TLS又被称之为传输层安全协议(Transport Layer Security),其前身是SSL。IETF(互联网工程任务小组)将SSL标准化,进行改进,在加密过程中使用了更加强大复杂的算法,修复了SSL的很多漏洞,并命名为TLS。

二、OpenSSL

OpenSSL是基于SSL/TLS加密协议的一种开源实现,实现了基本的加密功能。

OpenSSL由三个组件组成:

  1. openssl:多用途的命令行工具
  2. libcrypto:公共加密库
  3. libssl:库,实现了ssl及tls

openssl的子命令有很多,这里简要的说明一下openssl的用法

对称加密:

# openssl enc -e -des3 -a -salt -in ipset.sh -out ipsetenc:表示加密-e:加密算法-des3:des3加密算法-a:基于文本进行编码-salt:加盐-in:加密的文件-put:输出的文件
# openssl enc -d -des3 -a -salt -in ipest -out ipset.sh-d:表示解密

使用openssl –help查看加密算法

单向加密:

使用单向加密用来加密文件的特征码,加密算法有:

md5sum, sha1sum, sha224sum, sha256sum, sha512sum, openssl dgst

# openssl dgst -md5 ipset
-md5:表示使用md5算法进行加密

使用openssl给密码加密:

# openssl passwd -1 -salt 123456
-1:表示使用md5进行加密
-salt 123456:表示加盐,如果改变盐的值则会对加过造成巨大改变

生成随机数:

# openssl rand -hex 8
# openssl rand -base64 8

生成密钥对

# (umask 077; openssl genrsa -out key.pri 2048)
umask 077:由于密钥只能自己看见,所以在生成之后的权限只能是600
genrsa:生成密钥的算法
2048:密钥的位数
# openssl rsa -in key.pri -putout > key.pub
上述命令生成的仅仅只是私钥,而公钥是从私钥中提取出来的,所以要手动使用命令提取公钥

建立私有CA

证书申请及签署步骤:

  1. 生成申请请求
  2. RA检验
  3. CA签署
  4. 获取证书

OpenSSL配置文件在/etc/pki/tls/openssl.cnf文件中,其配置文件最主要的就是CA的一些配置

default_ca = CA_default:默认CA配置选项就是CA_default

dir = /etc/pki/CA CA数据存储目录

certs = $dir/certs 签发过的证书存储目录

crl_dir = $dir/crl 证书吊销列表放置路径

database = $dir/index.txt 证书的索引文件,这里存储的是签发的证书的索引

unique_subject = no 证书的主体信息是否唯一

new_certs_dir = $dir/newcerts 刚刚签署完成的证书放在哪里

certificate = $dir/cacert.pem CA自己的证书放在哪里

serial = $dir/serial 证书序列号

crlnumber = $dir/crlnumber 被吊销的证书序列号

crl = $dir/crl.pem 被吊销的证书

private_key = $dir/private/cakey.pem CA自己的私钥放置位置

自签证书步骤:

(1) 创建所需要的文件

在/etc/pki/CA这个目录下,也就是CA的数据存放目录,只有四个目录certs、crl、newcerts、private,而在OpenSSL的配置文件中定义的一些文件在这个目录中没有,如存放签发证书索引的database文件、存放证书序列号的serial文件。这时,我们需要手动创建这些文件:

# cd /etc/pki/CA
# touch index.txt       创建数据文件
# echo 01 > serial      创建签发证书的序列号文件

(2) 生成证书

# (umask 077; openssl genrsa -out private/cakey.pem 2048)在/etc/pki/CA/private目录下生成私钥文件cakey.pem
# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/cacert.pem
-new: 生成新证书签署请求
-x509:专用于CA生成自签证书
-key:生成请求时用到的私钥文件
-days:证书的有效期限
-out:证书的保存路径
例如:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN    //只能是两个单词
State or Province Name (full name) []:Hubei   //省份
Locality Name (eg, city) [Default City]:Hubei   //省份
Organization Name (eg, company) [Default Company Ltd]:xx    //公司
Organizational Unit Name (eg, section) []:Ops           //部门
Common Name (eg, your name or your server's hostname) []:xx //这个至关重要,必须与你的DNS服务器解析出来的主机名一致
Email Address []:xx         //邮箱

生成完成证书之后客户端要请求发证:

(1) 客户端在本地生成证书,与服务器端相似,这里不作过多描述

# (umask 077; openssl genrsa -out /root/httpd.key 2048)
# openssl req -new -key /root/httpd.key -days 365 -out /root/httpd.csr
注意:
1、在填写资料的时候,客户端的国家以及省份要与服务器端一致。
2、生成的公钥后缀也要发生改变
3、在向服务器端申请的时候不要加上-x509选项

(2) 使用scp命令将生成的公钥传递给服务器端

(3) 签署请求

# openssl ca -in /root/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365
证书的后缀为.crt

(4) 将签署完成的证书发送至客户端

一次完整的建立私有CA与签署请求的过程完成,要想查看签署的证书的详细信息使用以下命令:

# openssl x509 -in /PATH/FROM/CERT_FILE -noout -text
-in /PATH:指明签署的证书存放路径
-text:文本格式输出

(5) 吊销证书

(a) 客户端获取要吊销的证书的serial

# openssl x509 -in /path/from/cert_file -noout -serial -subject

(b) 先根据客户提交的serial与subject信息,对比检验是否与index.txt文件中的信息一致

吊销证书:

# openssl ca -revoke /etc/pki/CA/newcerts/SERTAL.pem    

(c) 生成吊销证书的编号(第一次吊销证书的时候才会使用到该命令)

# echo 01 > /etc/pki/CA/crlnumber       

(d) 更新证书吊销列表

# openssl ca -gencrl -out thisca.crl
查看crl文件:
# openssl crl -in /path/from/crl_file.crl -noout -text

–end–

OpenSSL与CA认证相关推荐

  1. openssl构建CA认证

    版本:openssl-1.0.1e /usr/local/nginx/demoCA/ # ca证书存放位置 /usr/local/nginx/conf/ssl/ #服务器证书存放位置 /home/sa ...

  2. Openssl搭建私有CA认证

    概述 CA英文全称Certification Authority,即数字证书认机构.从广义上来说,CA是负责发放和管理数字证书的权威机构,并作为用户数字认证中受信任的第三方,承担公钥体系(PKI)中公 ...

  3. 创建自己的CA机构 - openssl cert 双向认证

    为什么80%的码农都做不了架构师?>>>    1. 创建 openssl.cnf [ ca ] default_ca = subchen_ca[ subchen_ca ] cert ...

  4. openssl https 单向认证连接成功示例

    openssl https 单向认证连接成功示例 研究这个玩意也有几天的时间了,刚学C 因为不熟悉编译折腾了不少时间,终于弄通了,发个随笔给研究openssl https的同学一点提示吧. 环境: = ...

  5. LNMP与CA认证的童话故事

    在前面的一篇博客中,我已经介绍过,如何通过源码编译安装LAMP,见教你源码编译制作LAMP详细过程 ,这里就介绍下如何编译安装LNMP,以及如何在LNMP中添加ssl认证. LNMP,也叫做LEMP. ...

  6. 使用OpenSSL实现CA证书的搭建过程

    个人博客地址:http://www.pojun.tech/ 欢迎访问 什么是CA   CA,Catificate Authority,通俗的理解就是一种认证机制.它的作用就是提供证书(也就是服务端证书 ...

  7. CA 认证过程及 https 实现方法

    CA 认证过程 CA 概述:Certificate Authority 的缩写,通常翻译成认证权威或者认证中心,主要用途是为用户发放数字证书.CA 认证的流程和公安局派出所颁发身份证的流程一样 认证中 ...

  8. CA认证及http实现方法

    1 数字证书认证过程: 证书请求文件:CSR是Cerificate Signing Request的英文缩写,即证书请求文件,也就是证书申请者在申请数字证书时由CSP(加密服务提供者)在生成私钥的同时 ...

  9. [Linux] centos 6.5 httpd 自建CA 认证 实现 https 服务

    httpd 自建CA 认证 实现 https 服务 需要的软件: httpd mod_ssl openssl 本文将CA证书服务器和 httpd服务器放到一台物理机器上实现的, 可以作为学习的参考. ...

最新文章

  1. 写了一个好玩的小软件, 监视鼠标以及键盘的动作, 全局钩子. HowTired
  2. Zend Studio 修改高亮变量的颜色、括号颜色
  3. view bitmap 截图
  4. TypeScript类型检查机制
  5. Hadoop2.6.0完全分布式安装
  6. LeetCode题 - 13 罗马数字转整数
  7. 常见c#正则表达式类学习整理
  8. Linux SSh scp使用【远程文件/目录的传输】
  9. vue中axios访问Java后端跨域问题解决
  10. oracle 11g表空间之最大最小
  11. Axure rp 8 基本用法图解之一
  12. Windows的Git Bash使用tree命令
  13. apt 安装软件出现“无法定位软件包”的问题
  14. 手机app通用模板蓝色系用户登录页面
  15. 狭义货币供应量M1的同比增速对我国股市影响最直接
  16. Admin5推荐软文推广采用“链接标准化”
  17. 计算机大二学生个人总结报告,计算机学生大二第二学期自我总结计划自我总结计划.doc...
  18. android手机管理器在哪里打开,小米手机任务管理器在哪?怎么打开?
  19. 用电脑看电视的方法!!
  20. MySQL 8 忽略表名大小写

热门文章

  1. 摄像头CMOS CCD
  2. Kafka实现淘宝亿万级数据统计
  3. 微博推广方案和网站推广方案总结
  4. 什么是游戏美术设计?3D游戏建模常用的软件有哪些
  5. 51NOD - 1830路径交
  6. 汉文化资讯社区(maven ,SSM ,MySQL)
  7. 云ERP如何助力企业管理?ERP上云的好处
  8. oracle模板数据文件,Oracle EBS如何通过命令上传XML/BI Publisher数据定义文件和模板文件...
  9. VB6.0中关于setfocus用法
  10. java改成字体_更改JRE字体配置