OpenSSL自签名证书生成与签发

文章目录

  • 一、概述
    • 1、SSL/TLS简介
    • 2、背景
  • 二、安装
    • 1、安装openssl
  • 三、证书生成
    • 1、证书颁发机构CA证书生成
      • 1.1、产生CA的key和证书文件
    • 2、签发证书
      • 2.1、生成密钥文件serverC_1.key
      • 2.2、生成请求文件serverC_1.csr
      • 2.3、使用 CA 证书及CA密钥 对请求签发证书进行签发,生成 x509证书serverC_1.crt

一、概述

1、SSL/TLS简介

SSL(SecureSocket Layer)安全套接层,是网景公司提出的用于保证Server与client之间安全通信的一种协议,该协议位于TCP/IP协议与各应用层协议之间,即SSL独立于各应用层协议,因此各应用层协议可以透明地调用SSL来保证自身传输的安全性。
1999年,SSL 因为应用广泛,已经成为互联网上的事实标准。IETF 就在那年把 SSL 标准化。标准化之后的名称改为 TLS(是“Transport Layer Security”的缩写),中文叫做“传输层安全协议”。
很多相关的文章都把这两者并列称呼(SSL/TLS),因为这两者可以视作同一个东西的不同阶段。

2、背景

因为需要搭建一套mqtt的物联网数据交互系统,基于安全性考,需要走mqtt的ssl的连接通道。虽然现在好多大公司也有提供免费的证书可供使用,但此还是记录一次自己证书生成与签发过程。

  • mqtt的ssl连接配置,可查看小生另一博文:Mosquitto安装和用户权限配置 SSL连接配置

二、安装

1、安装openssl

三、证书生成

  • serverCA
  • serverC_1
  • serverC_2

1、证书颁发机构CA证书生成

1.1、产生CA的key和证书文件

定serverCA为证书颁发机构

在创建 /root/ssl 目录,cd /root/ssl

openssl req -new -x509 -keyout myca.key -out myca.crt -days 365

ps. -days:证书的有效时间/天

该命令将为CA产生一个名字为“myca.key”的key文件和一个名字为“myca.crt”的证书文件,这个crt就是CA自己给自己签名的证书文件

root@serverCA ~/ssl # openssl req -new -x509 -keyout myca.key -out myca.crt -days 365
Generating a 2048 bit RSA private key
...+++
.....+++
writing new private key to 'myca.key'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
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) [AU]:CN
State or Province Name (full name) [Some-State]:GuangDong
Locality Name (eg, city) []:ShenZhen
Organization Name (eg, company) [Internet Widgits Pty Ltd]:mcrazy
Organizational Unit Name (eg, section) []:broker
Common Name (e.g. server FQDN or YOUR name) []:xxx.mcrazy.cn
Email Address []:[email protected]

执行完会产生自己的CA,有两个文件myca.key myca.crt

root@serverCA ~/ssl # ls
myca.crt  myca.key

2、签发证书

使用自己产生的CA为serverC_1 服务器签发证书
将serverCA产生的CA文件拷贝serverC_1机子上的某个目录,例如:/Users/chao/Desktop/ssl,然后使用该CA为server产生证书文件

cd /Users/chao/Desktop/ssl

2.1、生成密钥文件serverC_1.key

  • 生成不加密key

openssl genrsa -out serverC_1.key 2048

  • 生成带加密key

openssl genrsa -des3 -out server.key 2048

2.2、生成请求文件serverC_1.csr

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

2.3、使用 CA 证书及CA密钥 对请求签发证书进行签发,生成 x509证书serverC_1.crt

这一步将需要输入CA的密码,同样,这里也可以看到刚才为CA输入的参数国家、省份等参数

openssl x509 -req -in serverC_1.csr -CA myca.crt -CAkey myca.key -CAcreateserial -out serverC_1.crt -days 365

该命令将使用CA的密钥文件myca.key,CA的证书文件myca.crt和上一步为serverC_1产生的证书请求文件serverC_1.csr文件这三个文件向CA请求产生一个证书文件,证书文件的名字为:serverC_1.crt

你可能感兴趣的:(MQTT,Linux)