文章目录

  • 一、CA机构分级管理
  • 二、OpenSSL
    • (一)生成随机数:
    • (二)ASCII编码与Base64编码转换:
    • (三)随机数生成器:
  • 三、搭建私有CA
    • (一)证书申请及签署步骤:
    • (二)搭建CA
      • 1.生成私钥
      • 2.生成自签名证书
      • 3.创建数据库以及新颁发证书数字
      • 4.设置证书起始编号
    • (三) 申请证书:企业服务
    • (四)颁发证书:CA
    • (五)使用证书:企业服务
    • (六)吊销证书:CA

个人博客: http://www.johnlee.ink/

一、CA机构分级管理

数字签名的重要性:
数字证书就是互联网通讯中标志通讯各方身份信息,数字证书不是通信双方的身份证书,而是认证机构在数字证书上扣得一个章,确认你的身份证书有效,它是由权威的CA机构颁发用于表示互联网上通信双方的身份。个人搭建的自由CA服务器在互联网中是不被认可的,但是可以在企业自己的内部网络中使用。

验证过程:
首先在根CA进行签署自证证书,然后子CA向根CA申请证书,根CA签署证书后子CA就可以向其他申请者发放证书。此时的子CA服务器相对于根服务器来说是申请者,相对于web服务器申请者是签署者,所以子CA是两个身份,既是申请者又是签署者

CA通讯过程:

二、OpenSSL

确认OpenSSL软件包是否安装

openssl常用指令
genrsa 生成RSA参数
req
x509
rsa
ca

genrsa:平时主要用来生成私钥,选择使用的算法、对称加密密码和私钥长度来生成私钥
基本用法:

openssl genrsa [args] [numbits]

其中常见的参数:【更多参数查看:openssl genrsa -help】

args1 对生成的私钥文件是否要使用加密算法进行对称加密: -des : CBC模式的DES加密 -des3 : CBC模式的3DES加密 -aes128 : CBC模式的AES128加密 -aes192 : CBC模式的AES192加密 -aes256 : CBC模式的AES256加密
args2 对称加密密码-passout passwords其中passwords为对称加密(des、3des、aes)的密码(使用这个参数就省去了console交互提示输入密码的环节)
args3 输出文件-out file : 输出证书私钥文件
[numbits]: 密钥长度,理解为私钥长度

req
req的基本功能主要有两个:生成证书请求和生成自签名证书,当然这并不是其全部功能,但是这两个最为常见;

常见使用方法:

openssl req [args] outfile

主要参数:【更多参数查看:openssl req -help】

args1 输入文件格式:-inform arg-inform DER 使用输入文件格式为DER-inform PEM 使用输入文件格式为PEM
args2 输出文件格式:-outform arg   -outform DER 使用输出文件格式为DER-outform PEM 使用输出文件格式为PEM
args3 待处理文件 -in inputfilepath
args4 待输出文件-out outputfilepath
args5 用于签名待生成的请求证书的私钥文件的解密密码-passin passwords
args6 用于签名待生成的请求证书的私钥文件-key file
args7 指定输入密钥的编码格式 -keyform arg  -keyform  DER-keyform  NET-keyform  PEM
args8 生成新的证书请求 -new
args9 输出一个X509格式的证书,签名证书时使用 -x509
args10 使用X509签名证书的有效时间  -days  // -days 3650 有效期10年
args11 生成一个bits长度的RSA私钥文件,用于签发【生成私钥、并生成自签名证书】 -newkey rsa:bits
args12 设置HASH算法-[digest]【生成私钥指定的hash摘要算法】-md5-sha1  // 高版本浏览器开始不信任这种算法-md2-mdc2-md4
args13 指定openssl配置文件,很多内容不容易通过参数配置,可以指定配置文件-config filepath
args14 显示格式txt【用于查看证书、私钥信息】-text

使用的案例:利用私钥(server.key)生成证书请求csr(server.csr)

openssl req -new -key server.key -out server.csr

使用案例:利用私钥生成自签名证书(ca.crt)

openssl req -new -x509 -days 3650 -key ca.key -out ca.crt

x509
x509是一个功能很丰富的证书处理工具。可以用来显示证书的内容,转换其格式,给CSR签名等X.509证书的管理工作;

用法如下:

openssl x509 [args]

参数如下:【更多参数查看:openssl x509 -help】

args1 是输入输入文件格式:-inform arg-inform DER 使用输入文件格式为DER-inform PEM 使用输入文件格式为PEM
args2 输出文件格式:-outform arg   -outform DER 使用输出文件格式为DER-outform PEM 使用输出文件格式为PEM
args3 是待处理X509证书文件 -in inputfilepath
args4 待输出X509证书文件-out outputfilepath
args5 表明输入文件是一个"请求签发证书文件(CSR)",等待进行签发-req
args6 签名证书的有效时间  -days  // -days 3650 有效期10年
args7 指定用于签发请求证书的根CA证书 -CA arg
args8 根CA证书格式(默认是PEM)     -CAform arg
args9 指定用于签发请求证书的CA私钥证书文件    -CAkey arg
args10 指定根CA私钥证书文件格式(默认为PEM格式)-CAkeyform arg
args11 指定序列号文件(serial number file)    -CAserial arg
args12 如果序列号文件(serial number file)没有指定,则自动创建它 -CAcreateserial
args13 设置HASH算法-[digest]【生成私钥指定的hash摘要算法】-md5-sha1  // 高版本浏览器开始不信任这种算法-md2-mdc2-md4

使用实例: 使用根CA证书[ca.crt]和私钥[ca.key]对"请求签发证书"[server.csr]进行签发,生成x509格式证书

openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out serverx509.crt

(一)生成随机数:

格式:openssl rand -base64|-hex NUM
NUM: 表示字节数,使用-hex,每个字符为十六进制,相当于4位二进制,出现的字符数为NUM*2

示例1:[root@CentOS7 data]#openssl rand -hex 12
生成的是16进制数,2位16进制数是1个字节,12个字节就是12*2=24位16进制数

示例2: base64:[root@CentOS7 data]#openssl rand -base64 12
base64转换为64个常见字符:

(二)ASCII编码与Base64编码转换:

转换方法:ASCII表对应字母10进制转二进制,高位起每6位做分隔,不够6位用0补齐(补齐的用=表示);转为对应base64编码表

Base64 编码表:

示例1

man ASCII
Oct   Dec   Hex   Char
141   97     61    a
142   98     62    b

a十进制:97 对应二进制:01100001
b十进制:98 对应二进制:01100010
ab组合的二进制:0110000101100010
base64:(0-63)用6位二进制可表示64位数,因此对ab的二进制高位起每6位做分隔,不够6位用0补齐(补齐的用=表示):二进制位是6和8的公倍数才不会出现等号,6和8最小公倍数是24

011000   010110   001000                              #二进制24       22        8                                # 32 16 8 4 2 1Y       W         I=                               #后面补了0 ,用=表示

示例2:[root@CentOS7 data]#openssl rand -base64 3
3个字节是24位,所以3的倍数个字节不带等号,即6和8最小公倍数的倍数也可整除6和8

(三)随机数生成器:

键盘和鼠标,块设备中断
/dev/random:仅从熵池返回随机数;随机数用尽,阻塞
/dev/urandom:从熵池返回随机数;随机数用尽,会利用软件生成伪随机数,非阻塞

加密:
生成私钥:
[root@CentOS7 data]#(umask 077;openssl genrsa -out /data/192.168.37.100.key)
对生成私钥加密:

[root@CentOS7 data]#(umask 077;openssl genrsa -out /data/192.168.37.100.key -des 1024)

对加密密钥解密

[root@CentOS7 data]#openssl rsa -in 192.168.37.100.key -out 192.168.37.100-2.key

不加密密钥:

生成加密密钥:

解密加密的密钥:

生成公钥:(由私钥推出)

openssl rsa -in 192.168.37.100-2.key -pubout -out 192.168.37.100.key.pub

三、搭建私有CA

(一)证书申请及签署步骤:

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

openssl的配置文件:/etc/pki/tls/openssl.cnf
三种策略:match匹配、optional可选、supplied提供
match:要求申请填写的信息跟CA设置信息必须一致
optional:可有可无,跟CA设置信息可不一致
supplied:必须填写这项申请信息

####################################################################
[ ca ]
default_ca      = CA_default            # The default ca section 机器可搭建多个CA;默认CA####################################################################
[ CA_default ]dir             = /etc/pki/CA           # Where everything is kept  CA信息目录
certs           = $dir/certs            # Where the issued certs are kept  颁发的证书位置
crl_dir         = $dir/crl              # Where the issued crl are kept  证书吊销列表所在位置
database        = $dir/index.txt        # database index file.   已经颁发的证书及状态数据库位置
#unique_subject = no                    # Set to 'no' to allow creation of# several ctificates with same subject.
new_certs_dir   = $dir/newcerts         # default place for new certs.  新颁发证书的位置certificate     = $dir/cacert.pem       # The CA certificate    CA的自己证书的位置
serial          = $dir/serial           # The current serial number  下一个颁发者的证书编号位置
crlnumber       = $dir/crlnumber        # the current crl number  吊销列表编号位置# must be commented out to leave a V1 CRL
crl             = $dir/crl.pem          # The current CRL  被吊销列表文件
private_key     = $dir/private/cakey.pem  # The private key   存放CA的私钥位置
RANDFILE        = $dir/private/.rand    # private random number file  私钥用到的随机数x509_extensions = usr_cert              # The extentions to add to the cert
default_days    = 365                   # how long to certify for   默认证书有效期
default_crl_days= 30                    # how long before next CRL   默认吊销证书
default_md      = sha256                # use SHA-256 by default
preserve        = no                    # keep passed DN ordering

(二)搭建CA

1.生成私钥

[root@CentOS7 ~](umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096)

2.生成自签名证书

(命令中带x509j是自签名证书,不带的是申请证书;-key 指定私钥文件;-days指定CA有效期;一般公司是一年)

#-new:生成新证书签署请求
#-x509:专用于CA生成自签证书
#-key:生成请求时用到的私钥文件
#-days n:证书的有效期限
#-out /PATH/TO/SOMECERTFILE: 证书的保存路径
openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem  -out /etc/pki/CA/cacert.pem  -days 3650
openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3650 <<EOF
CN
beijing
beijing
Dell
devops
ca.Dell.com
admin@Dell.com
EOF

填写的内容如下:可通过多行重定向方式填写

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]:Dell      #公司名称
Organizational Unit Name (eg, section) []:Devops        #部门
Common Name (eg, your name or your server's hostname) []:ca.dell.com   #域名
Email Address []:mail.dell.com      #企业邮箱地址

查看证书内容:

[root@CentOS7 ~]#openssl x509 -in /etc/pki/CA/cacert.pem -noout -text

Issuer: 颁发者
Validity:有效期
Subject:颁发给

3.创建数据库以及新颁发证书数字

[root@CentOS7 ~]#touch /etc/pki/CA/index.txt
[root@CentOS7 ~]#touch /etc/pki/CA/serial

4.设置证书起始编号

编号必须是整数位:

[root@CentOS7 ~]#echo 0F > /etc/pki/CA/serial


注: 无此两个文件,直接颁发证书时可能会出现如下报错:

Certificate:Data:Version: 3 (0x2)Serial Number:9b:4c:11:78:5f:08:37:a6Signature Algorithm: sha256WithRSAEncryption
颁发者:   Issuer: C=CN, ST=Beijing, L=Beijing, O=Dell, OU=Devops,   CN=ca.dell.com/emailAddress=mail.dell.com
有效期     ValidityNot Before: Jun 22 05:56:38 2019 GMTNot After : Jun 19 05:56:38 2029 GMT
颁发给:  Subject: C=CN, ST=Beijing, L=Beijing, O=Dell, OU=Devops, CN=ca.dell.com/emailAddress=mail.dell.comSubject Public Key Info:Public Key Algorithm: rsaEncryptionPublic-Key: (4096 bit)Modulus:00:a9:a5:45:d9:29:d1:56:af:7c:13:e7:ba:ce:58:c2:31:85:f2:d0:34:c9:39:26:6f:36:c1:da:3d:da:60:31:34:50:99:fc:fc:69:4d:7e:cc:5e:0d:8d:0b:5d:f2:ff:8f:67:34:70:fe:e8:d2:f1:f6:02:24:41:

(三) 申请证书:企业服务

申请的证书放在具体服务的配置文件路径中;申请时间由颁发者规定的
1.生成私钥文件:

[root@CentOS6 httpd]#(umask 066;openssl genrsa -out /data/httpd/httpd.key 2048)

2.生成证书申请文件
注意:申请是填写的信息:默认要求 国家,省,公司名称三项必须和CA的自签名填写的一致

[root@CentOS6 httpd]#openssl req -new  -key httpd.key -out httpd.csr

3.将申请文件发送给CA机构

[root@CentOS6 data]#openssl req -new -key httpd.key -out httpd.csr
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) []:Beijing
Locality Name (eg, city) [Default City]:bj
Organization Name (eg, company) [Default Company Ltd]:Dell
Organizational Unit Name (eg, section) []:test
Common Name (eg, your name or your server's hostname) []:ca.tmall.com
Email Address []:Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:


(四)颁发证书:CA

颁发证书,默认生效日期为365天,证书后缀为crt、pem都可以
1.生成证书文件

openssl ca -in /data/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 100

2.将证书文件发送给申请公司

(五)使用证书:企业服务

申请者上传至颁发的证书至具体服务目录下
windows主机:使用sz工具将他导出到windows机器中。然后双击安装此证书到受信任的根证书颁发机构

(六)吊销证书:CA

[root@CentOS7 ~]#openssl ca -revoke /etc/pki/CA/newcerts/0F.pem  #吊销证书
[root@CentOS7 ~]#openssl ca -status 0F    #查看证书状态
[root@CentOS7 ~]#echo FF > /etc/pki/CA/crlnumber     #定义吊销列表起始编号
[root@CentOS7 ~]#openssl ca -gencrl -out /etc/pki/CA/crl.pem  #更新吊销列表
[root@CentOS7 ~]#openssl crl -in /etc/pki/CA/crl.pem -noout -text    #查看crl.pem 文件

参考文献:https://segmentfault.com/a/1190000014963014

搭建开源CA认证-申请颁发证书相关推荐

  1. Openssl搭建私有CA认证

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

  2. CA是如何颁发证书的

    证书的生成 我们在上篇博客里提到,要获得对方信任的公钥,就要通过CA来颁发证书, 证书里通常包含如下信息: 证书持有者的信息, CA的相关信息 证书的使用说明 公钥 在linux中与CA相关的信息在/ ...

  3. ca 自建 颁发证书_openssl自建CA后颁发证书

    一 自签证书实践 在介绍颁发证书之前先做一个试验,用自签证书来通过chrome访问: 1 通过openssl一键自签证书,生成证书和私钥: sudo openssl req -x509 -nodes ...

  4. ca 自建 颁发证书_自建 ca 及使用 ca 颁发证书

    创建CA: 一.安装openssl [root@localhost ~]# yum install -y openssl 二.创建CA的相关文件及目录 mkdir /opt/root_ca & ...

  5. 手动搭建一个https服务器,并颁发证书

    1.下载安装openssl(用于生成秘钥颁发证书) mac自带 window:https://slproweb.com/products/Win32OpenSSL.html 2.生成CA证书,CA钥和 ...

  6. Windows Server 做CA给Centos 颁发证书

    需要一个全新的环境 Centos 7 配置 yum install httpd.x86_64 -y #安装httpd服务 mdkir -p /etc/httpd/ssl #创建用来客户端的私钥文件和请 ...

  7. ca 自建 颁发证书_自建ca证书

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  8. rhel6.3下使用openssl来生成CA证书并颁发证书实例解析

    一.配置OPENSSL [root@test1 /]# rpm -qa|grep openssl openssl-1.0.0-20.el6_2.5.i686 [root@test1 /]# cd /e ...

  9. rhel6.3下使用openssl来生成CA证书并颁发证书实例解

    •     一.配置OPENSSL [root@test1 /]#rpm -qa|grep openssl openssl-1.0.0-20.el6_2.5.i686 [root@test1 /]# ...

最新文章

  1. 【c语言】蓝桥杯入门训练 A+B问题
  2. fiddler如何设置过滤https_Google Analytics如何设置含有过滤器的帐户数据视图
  3. 【LeArm】动手实践机械臂(一)
  4. 《Nmap渗透测试指南》—第7章7.10节扫描Web漏洞
  5. 【js】碰到了Flash与extjs冲突无法输入中文解决办法。
  6. 如何按关键字搜索商品详情
  7. 个人游戏经历及游戏体验(解谜向)
  8. activemq 简介 配置
  9. 360智力测试题(2014版)
  10. 接入支付宝支付SDK
  11. kettle 配置jndi数据源
  12. Android利用TranslateAnimation 动画实现上下平移横线(模拟人脸识别扫描,二维码识别扫描)
  13. 华为ax3怎么接光纤sc接口_华为路由器AX3怎么设置?
  14. “鸿蒙之父”王成录重申:鸿蒙系统不是安卓套壳;苹果多款产品电池修理费将涨价;Debian移除Python 2|极客头条...
  15. Linux中xxd的简单应用
  16. 区块链:Casper 机制的历史起源:第二篇
  17. 汇编语言程序设计——仿win7计算器(功能部分)
  18. 【mqtt】centos搭建EMQ mqtt服务器
  19. Git 本地与远程仓库同步操作
  20. 2013年IT审计师认证的详细资料

热门文章

  1. PowerDesigner数据库设计与建模。数据库中设计一对一、一对多、多对多、依赖关系、继承关系。
  2. 字符串方法——截取字符串
  3. 智能洗碗机自动感应,人体存在感应雷达技术,雷达感应模组应用
  4. 教大家怎么挑选一家好的培训机构
  5. 店铺人群标签乱了怎么办,如何纠正店铺人群标签
  6. 常用H5标签-第一部分
  7. 计算机应用做银行it业务股票,中信建投--计算机应用行业:重视银行IT行业大拐点.pdf...
  8. 安装linux戴尔找不到引导,dellR720重启找不到启动引导项,手动选择也无用。
  9. ModifyMenu
  10. r7和i7处理器适合安Linux,r7和i7有什么区别?