Openssl 创建CA和申请证书

Openssl 创建CA和申请证书

===============================================================================

概述:

本章是上篇加密解密技术的续,主要介绍Openssl创建CA、申请证书、办法证书的整个操作,具体内容如下:

  • 创建私有CA;
  • 给节点颁发证书;
  • 吊销证书

 详情查看上篇加密解密技术:http://1992tao.blog.51cto.com/11606804/1856438

===============================================================================

创建CA

 1.创建CA

★数字证书的获取有两种方法:

向RA注册申请即公共信任的CA;

自己创建私有CA

  • openssl
  • OpenCA

使用OpenSSL创建私有CA的步骤:

在确定配置为CA的服务上生成一个自签证书,并为CA提供所需要的目录及文件即可;

①生成私钥;

  • 私钥用于签发证书时,向证书添加数字签名使用;

②生成自签署证书;

  • 证书:每个通信方都导入此证书至“受信任的证书颁发机构”

openssl配置文件:

  • /etc/pki/tls/openssl.cnf

工作目录

  • /etc/pki/CA

具体步骤:

生成私钥文件/etc/pki/CA/private/cakey.pem 

  • # (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: 生成请求时用到的私有文件路径;
  • -days n:证书的有效时间,单位是day;
  • -out /PATH/TO/SOMECERTFILE: 生成的请求证书路径;如果自签操作将直接生成签署过得证书

为CA提供所需的目录及文件

  • # mkdir /etc/pki/CA/{certs,crl,newcerts} (存在的话就不用创建了)
  • # toouch /etc/pkl/CA/index.txt (数据库文件)
  • # echo 01 > /etc/pki/CA/serial (序列号文件并给明第一个证书的序列号码)

  2.给节点颁发证书

★给节点颁发证书

要用到证书进行安全通信的服务器,需要向CA请求签署证书;

在证书申请的主机上进行如下步骤:

  • 生成私钥;
  • 生成证书签署请求; (注意:默认国家,省,公司名称必须和CA一致)
  • 将请求通过可靠方式发送给CA主机

在CA主机上签发证书

  • 验证请求者信息;
  • 签署证书;
  • 把签署好的证书发还给请求者

 3.吊销证书(了解)

吊销证书

在客户端获取要吊销的证书的序列号serial;

  • # openssl x509 -in httpd.crt -noout -serial -subject

在CA上,根据客户提交的serial与subject信息,对比检验是否与index.txt文件中的信息一致;

吊销证书;

  • # openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem
  • 其中SERIAL要替换成证书真正的序列号

生成吊销证书的编号(第一次吊销证书时才需要执行);

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

更新证书吊销列表

  • # openssl crl -gencrl -out THISCA.crl




实验:创建私有CA并给节点颁发证书

1.创建私有CA步骤演示:

 1)生成私钥文件/etc/pki/CA/private/cakey.pem

[[email protected] ~]# ls /etc/pki/CA/private/  # 查看私钥文件为空
[[email protected] ~]# (umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096) # 生成私钥文件
Generating RSA private key, 4096 bit long modulus
..............++
...........................................................................................................................................................................................................................................................................................................................++
e is 65537 (0x10001)
[[email protected] ~]# ls /etc/pki/CA/private/
cakey.pem
[[email protected] ~]# ll /etc/pki/CA/private/  # 查看文件,并确定其权限仅为属主自己
total 4
-rw------- 1 root root 3247 Sep 28 19:03 cakey.pem

  2)生成自签证书

# 生成自签证书指明私钥文件,证书保存路径,有效期限等
[[email protected] ~]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3650 
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]:Beijing # 所在城市
Organization Name (eg, company) [Default Company Ltd]:Magedu # 组织(公司)名称
Organizational Unit Name (eg, section) []:Ops # 所在岗位
Common Name (eg, your name or your server‘s hostname) []:ca.magedu.com # 证书持有者姓名或请求证书服务器的主机名
Email Address []:[email protected] # 邮件地址
[[email protected] ~]# ls /etc/pki/CA
cacert.pem # 生成的自签证书  certs  crl  newcerts  private

  3)为CA提供所需的目录和文件

[[email protected] ~]# touch /etc/pki/CA/index.txt  # 创建数据库文件
[[email protected] ~]# echo 01 > /etc/pki/CA/serial # 创建序列号文件并给明第一个证书的序列号码
[[email protected] ~]# ls /etc/pki/CA/
cacert.pem  certs  crl  index.txt  newcerts  private  serial


2.给节点颁发证书步骤演示

假设CentOS 6为一个web服务器,要向客户端提供http服务就需要证书文件,并把请求发送给CA进行签署

 1)在证书申请的主机上生成私钥

[[email protected] ~]# rpm -q httpd  # 这里以http服务为例
httpd-2.2.15-53.el6.centos.x86_64
[[email protected] ~]# cd /etc/httpd/
[[email protected] httpd]# ls
conf  conf.d  logs  modules  run
[[email protected] httpd]# mkdir ssl  # 在文件中创建ssl目录
[[email protected] httpd]# cd ssl   # 在此目录中生成私钥
[[email protected] ssl]# (umask 077;openssl genrsa -out httpd.key 2048) # 注意这里不是在 /etc/pki/CA下创建,只有作为CA时才在其下进行创建
Generating RSA private key, 2048 bit long modulus
.............+++
.........................................................................................+++
e is 65537 (0x10001)
[[email protected] ssl]# ll
total 4
-rw------- 1 root root 1675 Sep 28 16:55 httpd.key # 生成的私钥文件

 2)生成证书签署请求:

[[email protected] ssl]# openssl req -new -key httpd.key -out httpd.csr -days 365
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]:Beijing      
Organization Name (eg, company) [Default Company Ltd]:Magedu
Organizational Unit Name (eg, section) []:Ops
Common Name (eg, your name or your server‘s hostname) []:CentOS.magedu.com
Email Address []:[email protected]

Please enter the following ‘extra‘ attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

  3)把请求发送给CA

[[email protected] ssl]# scp httpd.csr [email protected]:/tmp/  # 这里使用scp命令
The authenticity of host ‘10.1.249.203 (10.1.249.203)‘ can‘t be established.
RSA key fingerprint is cf:7d:49:75:55:54:45:88:a3:dd:ff:f3:87:be:3f:06.
Are you sure you want to continue connecting (yes/no)? y
Please type ‘yes‘ or ‘no‘: yes
Warning: Permanently added ‘10.1.249.203‘ (RSA) to the list of known hosts.
[email protected]‘s password: 
httpd.csr                                100% 1062     1.0KB/s   00:00   

[[email protected] ~]# ls /tmp/ # 查看文件
httpd.csr # 申请主机发送过来的文件
systemd-private-c7c1f3e358e34fc2add5b3729e413ed8-cups.service-KSESlC
systemd-private-d276c273baee4a299b8d240ba604a5f2-cups.service-etgI6i

 4)CA签发证书

[[email protected] ~]# openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365  
# 签发证书,-in指明要签的证书文件位置,-out指明签好后输出的文件位置,必须放在certs下,指明期限
Using configuration from /etc/pki/tls/openssl.cnf
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number: 1 (0x1)
        Validity
            Not Before: Sep 28 13:21:38 2016 GMT
            Not After : Sep 28 13:21:38 2017 GMT
        Subject:
            countryName               = CN
            stateOrProvinceName       = Beijing
            organizationName          = Magedu
            organizationalUnitName    = Ops
            commonName                = CentOS.magedu.com
            emailAddress              = [email protected]
        X509v3 extensions:
            X509v3 Basic Constraints: 
                CA:FALSE
            Netscape Comment: 
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier: 
                04:FD:4F:25:36:40:D1:CA:9A:2B:4C:AD:7D:C9:CD:18:34:E7:D0:33
            X509v3 Authority Key Identifier: 
                keyid:44:82:7B:4C:D4:19:C4:28:F9:72:41:1D:01:5D:B9:CB:84:9E:43:61

Certificate is to be certified until Sep 28 13:21:38 2017 GMT (365 days)
Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

[[email protected] ~]# cd /etc/pki/CA
[[email protected] CA]# ls
cacert.pem  crl        index.txt.attr  newcerts  serial
certs       index.txt  index.txt.old   private   serial.old
[[email protected] CA]# cat index.txt  # 可以看到第一个签署的证书编号为01
V	170928132138Z		01	unknown	/C=CN/ST=Beijing/O=Magedu/OU=Ops/CN=CentOS.magedu.com/[email protected]

 5)把签署好的证书发还给请求者

[[email protected] CA]# scp certs/httpd.crt [email protected]:/etc/httpd/ssl
The authenticity of host ‘10.1.252.153 (10.1.252.153)‘ can‘t be established.
RSA key fingerprint is f7:91:35:d1:33:ab:e8:af:4c:cc:39:45:e7:12:2f:b3.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘10.1.252.153‘ (RSA) to the list of known hosts.
[email protected]‘s password: 
httpd.crt                                                                                                                            100% 5886     5.8KB/s   00:00

 请求者查看证书

# 请求者收到后查看
[[email protected] ssl]# ls
httpd.crt(# 签署的证书)  httpd.csr  httpd.key
[[email protected] ssl]# rm -f httpd.csr # 没用的文件就可以删除了

[[email protected] ssl]# openssl x509 -in httpd.crt -noout -serial -subject # 查看序列号和主题
serial=01
subject= /C=CN/ST=Beijing/O=Magedu/OU=Ops/CN=CentOS.magedu.com/[email protected]

总结:

时间: 2024-09-29 09:23:44

Openssl 创建CA和申请证书的相关文章

使用OpenSSL创建CA和申请证书

OpenSSL简介 OpenSSL是一种加密工具套件,可实现安全套接字层(SSL v2 / v3)和传输层安全性(TLS v1)网络协议以及它们所需的相关加密标准. openssl命令行工具用于从shell程序使用OpenSSL加密库的各种加密功能. 它可以用于: 创建和管理私钥,公钥和参数 公钥加密操作 创建X.509证书,CSR和CRL 消息摘要的计算 使用密码进行加密和解密 SSL / TLS客户端和服务器测试 处理S / MIME签名或加密的邮件 时间戳记请求,生成和验证 openssl

openssl创建CA、申请证书及其给web服务颁发证书

一.创建私有的CA   1)查看openssl的配置文件:/etc/pki/tls/openssl.cnf   2)创建所需的文件 touch /etc/pki/CA/index.txt   echo 01 >/etc/pki/CA/serial 3)CA自签证书生成私钥 cd /etc/pki/CA (umask 066;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048) 4)生成自签名证书 openssl req -new -x50

Centos7.3创建CA和申请证书

Centos7.3创建CA和申请证书 openssl 的配置文件:/etc/pki/tls/openssl.cnf 重要参数配置路径 dir   = /etc/pki/CA                # Where everything is kept certs   = /etc/pki/CA/certs            # Where the issued certs are kept database    = /etc/pki/CA/index.txt        # dat

Centos7创建CA和申请证书 转自https://www.cnblogs.com/mingzhang/p/8949541.html

Centos7.3创建CA和申请证书 openssl 的配置文件:/etc/pki/tls/openssl.cnf 重要参数配置路径 dir   = /etc/pki/CA                # Where everything is kept certs   = /etc/pki/CA/certs            # Where the issued certs are kept database    = /etc/pki/CA/index.txt        # dat

半自动化创建CA和申请证书

1 概述 本文之所以称之为半自动化,是因为证书的申请并非日常工作,只是一段时间才需要申请,同时,在创建证书和办法证书的时候,有些参数需要根据用户的需求自己调整,如证书的有效时间,还有,是否给私钥加密等等,因为叫脚本设置为半自动化,手动输入一些参数,到达用户的需求.当然如果环境是固定,参数也是固定,有效时间固定,该脚本配合crontab也可以实现自动化申请和颁发等操作 CA中心又称CA机构,即证书授权中心(Certificate Authority ),或称证书授权机构.本文将介绍通过openss

加密、解密的原理及Openssl创建CA和ssh的基础应用

加密.解密的原理及Openssl创建CA和ssh的基础应用 随着互联网的不断发展和技术的不断成熟,在互联网上传输文件不在安全,在需要传送重要的数据时就必须加密处理. 密码算法分为三种:分别是对称加密,公钥加密,单向加密:以及需要对加密算法的认证,叫做认证协议.下面为大家概述对称加密,公钥加密,单向加密及认证协议 对称加密: 采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密. 需要对加密和解密使用相同密钥的加密算法.由于其速度快,对称性

创建CA自签证书

创建CA自签证书 1,创建CA服务器的私钥: (umask 0077;openssl genrsa -out cakey.pem 2048) 注意:将私钥放在目录下 /etc/pki/CA/private 2,创建CA服务器自签证书: [[email protected] CA]# openssl req -new -x509 -key cakey.pem -out /etc/pki/CA/cacert.pem You are about to be asked to enter informa

Openssl应用实例:创建私有CA并申请证书

一:实验环境 CA:centos6   172.17.252.226 客户端:centos7 172.17.252.188 二:阅读CA相关配置文件 CA配置文件路径:/etc/pki/tls/openssl.cnf 图一 图二 图三 三:证书申请及签署步骤 1.生成申请请求 2.RA核验 3.CA签署 4.获取证书 具体实验步骤 一:创建私有CA(certificate autrority  签证机构)    ##操作环境:centos6 1.创建所需要的文件  (如图一所示) ①生成证书索引

Linux如何创建私有CA和申请证书

openssl的配置文件:/etc/pki/tls/openssl.cnf 三种策略:匹配.支持和可选.匹配:指要求申请填写的信息跟CA设置信息必须一致:支持:指必须填写这项申请信息:可选:指可有可无. 实验环境:需要两台主机,我这里用主机A(Centos6:ip为172.17.250.83)创建CA并给其他主机提供CA服务:主机B(Centos7:ip为172.17.253.204)为httpd服务器,用来申请证书. 1.首先看一下配置文件的部分内容,其中以下内容在创建CA时是必须要写的: d