做CA证书嫌OpenSSL命令行麻烦吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了做CA证书嫌OpenSSL命令行麻烦吗相关的知识,希望对你有一定的参考价值。

  最近做CA登陆,用到OpenSSL 来制作证书,说真的,用OpenSSL的命令行制作证书的确不方便。

  首先要安装OpenSSL,然后在控制台中输入冗长的命令,一不小心还很容易出错,就算是熟悉了命令行,

  多做了几次还是会弄混淆命令的参数,基于以上原因,我就想做一个CA证书制作的工具,封装好OpenSSL的命令行

  做成类似于微软的IIS制作证书的向导那样,因此CABuilder4OpenSSL就这样开始了

  花了大半个月的时间,大体上完成了制作证书的常用的功能,现传上来和大家学习交流

  现对CABuilder4OpenSSL主要功能做些介绍:

  分为两大块,证书任务和证书工具

  其中,证书任务有,

  1,制作证书请求文件

  2,制作自签名根证书

  3,签发文件,可以对请求文件和自签名证书进行签发证书

  4,制作私钥,

  证书工具有,

  1,合成PFX文件,

  2,分解PFX文件,即从中提取私钥和证书

  3,PFX转换成PEM,即将二进制格式的PFX文件转换成ascii 编码格式的(内含私钥和证书,

  优点:无需安装OpenSSL即可制作证书,无需担心忘记命令,只需点击鼠标就可以完成证书的制作,当然了可能会需要

  自己选一下存放的目录,和自定义输出文件的名字,以及输入证书主题的内容

  缺点:私钥未对其进行加密,因此用它制作证书要保存好私钥,整个CABuilder4OpenSSL都是默认私钥未加密的,所以使用加密的私钥都不能使用它来制作证书或转换文件,即对加密的私钥文件不支持,

  由于是使用VS2005(C#)做的,不能直接在任何的WINDOWS机器上运行,需要.NET FrameWork2.0 及以上版本的支持 。

  声明:本软件只供学习交流使用,若是由于使用本软件直接或间接导致的损失,本人概不负法律责任

  注意,使用本软件制作的私钥未对其文件进行DES安全加密,请自行保存好制作的私钥,

转载

参考技术A   比较麻烦,但收益比较丰厚。
  传感器(英文名称:transducer/sensor)是一种检测装置,能感受到被测量的信息,并能将感受到的信息,按一定规律变换成为电信号或其他所需形式的信息输出,以满足信息的传输、处理、存储、显示、记录和控制等要求。
  传感器的特点包括:微型化、数字化、智能化、多功能化、系统化、网络化。它是实现自动检测和自动控制的首要环节。传感器的存在和发展,让物体有了触觉、味觉和嗅觉等感官,让物体慢慢变得活了起来。通常根据其基本感知功能分为热敏元件、光敏元件、气敏元件、力敏元件、磁敏元件、湿敏元件、声敏元件、放射线敏感元件、色敏元件和味敏元件等十大类。

使用OpenSSL创建CA和申请证书

OpenSSL简介

OpenSSL是一种加密工具套件,可实现安全套接字层(SSL v2 / v3)和传输层安全性(TLS v1)网络协议以及它们所需的相关加密标准。

openssl命令行工具用于从shell程序使用OpenSSL加密库的各种加密功能。 它可以用于:

  • 创建和管理私钥,公钥和参数
  • 公钥加密操作
  • 创建X.509证书,CSR和CRL
  • 消息摘要的计算
  • 使用密码进行加密和解密
  • SSL / TLS客户端和服务器测试
  • 处理S / MIME签名或加密的邮件
  • 时间戳记请求,生成和验证

openssl配置文件及三种策略

配置文件
/etc/pki/tls/openssl.cnf

三种策略
match(匹配):要求申请填写的信息跟CA设置信息必须一致
optional(可选):可有可无,跟CA设置信息可不一致
supplied(提供):必须填写这项申请信息

创建私有CA和申请、颁发证书文件(以下操作都是在一台机器上执行)

1.创建所需要的文件

[root@CentOS7 ~]# cd /etc/pki/CA/
[root@CentOS7 CA]# touch index.txt  生成证书索引数据库文件
[root@CentOS7 CA]# echo 01 > serial 指定第一个颁发证书的序列号

2.CA自签证书

2.1生成私钥
[root@CentOS7 CA]# (umask 066;openssl genrsa -out private/cakey.pem 2048)
Generating RSA private key, 2048 bit long modulus
...................................................................................+++
.+++
e is 65537 (0x10001)
2.2生成自签名证书
[root@CentOS7 CA]# openssl req -new -x509 -key private/cakey.pem -days 3650 -out cacert.pem
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]:abc
Organizational Unit Name (eg, section) []:IT  
Common Name (eg, your name or your server‘s hostname) []:hechunping
Email Address []:root@abc.com

选项说明:
-new:生成新证书签署请求
-x509:专用于CA生成自签证书
-key:生成请求时用到的私钥文件
-days n:证书的有效期限
-out /PATH/TO/SOMECERTFILE: 证书的保存路径

3.颁发证书

3.1在需要使用证书的主机生成证书请求(本实验是在本机)
3.1.1生成私钥
[root@CentOS7 CA]# (umask 066;openssl genrsa -out /data/test.key 2048)
Generating RSA private key, 2048 bit long modulus
..................................................+++
...............................+++
e is 65537 (0x10001)
3.1.2生成证书申请文件
[root@CentOS7 CA]# openssl req -new -key /data/test.key -out /data/test.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]:beijing
Organization Name (eg, company) [Default Company Ltd]:abc
Organizational Unit Name (eg, section) []:IT
Common Name (eg, your name or your server‘s hostname) []:hechunping
Email Address []:root@abc.com

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

3.2将证书申请文件传输给CA(两台不同的主机可以使用scp命令传输)

3.3CA签署证书,并将证书颁发给请求者
[root@CentOS7 CA]# openssl ca -in /data/test.csr -out certs/test.crt -days 100
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: Nov 10 13:45:34 2019 GMT
            Not After : Feb 18 13:45:34 2020 GMT
        Subject:
            countryName               = CN
            stateOrProvinceName       = beijing
            organizationName          = abc
            organizationalUnitName    = IT
            commonName                = hechunping
            emailAddress              = root@abc.com
        X509v3 extensions:
            X509v3 Basic Constraints: 
                CA:FALSE
            Netscape Comment: 
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier: 
                4C:AE:F0:13:F0:CD:8F:B5:F7:3F:1B:C8:E4:77:91:02:9E:88:6B:5A
            X509v3 Authority Key Identifier: 
                keyid:E3:C1:5E:6D:94:5E:F2:AE:16:67:79:2C:69:B5:B9:10:D9:E0:51:BE

Certificate is to be certified until Feb 18 13:45:34 2020 GMT (100 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

注意:默认要求 countryName(国家),stateOrProvinceName(省),organizationName(公司)三项必须和CA一致

3.4查看证书中的信息

[root@CentOS7 CA]# openssl x509 -in certs/test.crt -noout -text|issuer|subject|serial|dates

3.5查看指定编号的证书状态

[root@CentOS7 CA]# openssl ca -status 01
Using configuration from /etc/pki/tls/openssl.cnf
01=Valid (V)

4.吊销证书

4.1在客户端获取要吊销的证书的serial
[root@CentOS7 CA]# openssl x509 -in certs/test.crt -noout -serial -subject
serial=01
subject= /C=CN/ST=beijing/O=abc/OU=IT/CN=hechunping/emailAddress=root@abc.com
4.2在CA上,根据客户提交的serial与subject信息,对比检验是否与index.txt文件中的信息一致
[root@CentOS7 CA]# cat index.txt
V   200218134534Z       01  unknown /C=CN/ST=beijing/O=abc/OU=IT/CN=hechunping/emailAddress=root@abc.com
4.2.1吊销证书
[root@CentOS7 CA]# openssl ca -revoke newcerts/01.pem 
Using configuration from /etc/pki/tls/openssl.cnf
Revoking Certificate 01.
Data Base Updated

4.2指定第一个吊销证书的编号,注意:第一次更新证书吊销列表前才需要执行。

[root@CentOS7 CA]# echo 01 > crlnumber

4.3更新证书吊销列表

[root@CentOS7 CA]# openssl ca -gencrl -out crl.pem
Using configuration from /etc/pki/tls/openssl.cnf

4.4查看crl文件

[root@CentOS7 CA]# openssl crl -in crl.pem -noout -text

将申请下来的证书导出到windows中查看

1.在windows上按"win+R"键,然后运行"certmgr.msc"命令。
2.找到“受信任的根证书颁发机构”右键单击“所有任务”--->“导入”,然后按照向导选择在Linux申请下来的证书。
3.查看证书信息
技术图片

以上是关于做CA证书嫌OpenSSL命令行麻烦吗的主要内容,如果未能解决你的问题,请参考以下文章

使用OpenSSL创建CA和申请证书

openssl生成.pem证书

openssl生成perm文件

使用openssl做CA服务器,并且生成证书。

用openssl生成SSL使用的私钥和证书,并自己做CA签名

Android7.0以上 安装Ca证书