OpenSSL使用示例创建自签名证书Linux

在本文中,我将与openssl分享在Linux中创建自签名证书的步骤。

在Linux中创建自签名证书所需的步骤

生成自签名证书的步骤包括:

  • 生成私钥 server.key
  • 创建证书签名请求(CSR)server.csr
  • 签署证书签名请求并生成自签名证书server.crt

安装openssl

在RHEL / CentOS 7/8上,您可以分别使用yum / dnf,而在Ubuntu上,则可以apt-get用于安装openssl rpm

[root @ centos8-1〜]#yum -y install openssl

创建加密的密码文件(可选)

  • 使用openssl自签名证书,可以生成带有或不带有passphraseprivate key
  • 如果在创建私钥时使用任何类型的加密,则每次尝试访问私钥时都必须提供密码。
  • 使用加密的密码文件 passphrase,我们可以避免在创建自签名证书时输入密码。

我已经在mypass文件中存储了密码secret

[root @ centos8-1〜]#echo secret >  mypass

使用openssl enc我将加密mypass文件并创建一个加密文件mypass.enc

[root@centos8-1 ~]# openssl enc -aes256 -pbkdf2 -salt -in mypass -out mypass.enc
enter aes-256-cbc encryption password:
Verifying - enter aes-256-cbc encryption password:

加密文件的内容现在不可读。我们将此加密文件共享给任何用户以生成ssl证书。

[root@centos8-1 ~]# cat mypass.enc
Salted__▒▒Y$▒V΃cQVȥ▒2ĺ)▒MS▒

如果要解密加密的密码文件,可以使用以下命令:

[root@centos8-1 ~]# openssl enc -aes256 -pbkdf2 -salt -d -in mypass.enc
enter aes-256-cbc decryption password:
secret

我将创建一个新目录来存储我的证书

[root@centos8-1 certs]# mkdir /root/certs
[root@centos8-1 certs]# cd /root/certs

我也将加密的密码文件复制到/root/certs

[root@centos8-1 certs]# ls -l
total 8
-rw-r--r-- 1 root root   32 Apr  9 13:31 mypass.enc

OpenSSL创建带有passphrase的自签名证书

在本节中,我将分享一些示例,这些示例将使用密码来openssl创建自签名证书,但是我们将使用加密的文件mypass.enc来创建私钥和其他证书文件。

生成私钥

我们需要生成私钥,该私钥将在后续步骤中用于创建证书签名请求(CSR)
在此示例中,我们将创建具有3DES加密的私钥。
您还可以选择其他任何输入方式。

[root@centos8-1 certs]# openssl genrsa -des3 -passout file:mypass.enc -out server.key 4096
Generating RSA private key, 4096 bit long modulus (2 primes)
................................................++++
..++++
e is 65537 (0x010001)

提示:在这个例子中用-passout file:,也可以使用pass:<passphrase>env:<variable>fd:<number>。如果不使用该-passout选项,则openssl generate private key命令将在生成私钥之前提示输入密码。

创建证书签名请求(CSR)证书

接下来使用openssl私钥server.key创建一个server.csr证书请求。

这个命令将提示输入一系列内容(国家,州或省等)。确保“ Common Name ”与Linux服务器的注册完全合格域名(如果没有IP地址,则匹配您的IP地址)相匹配。或者,您也可以创建SAN认证,该认证将允许您在单个证书中提供多个备用名称。

[root@centos8-1 certs]# openssl req -new -key server.key -out server.csr -passin file:mypass.enc
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]:IN
State or Province Name (full name) []:KARNATAKA
Locality Name (eg, city) [Default City]:BENGALURU
Organization Name (eg, company) [Default Company Ltd]:GoLinuxCloud
Organizational Unit Name (eg, section) []:R&D
Common Name (eg, your name or your server's hostname) []:centos8-1
Email Address []:admin@golinuxcloud.com

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

(可选)要自动执行此步骤来创建CSR(server.csr·),我们可以使用openssl.cnf`或创建一个带有所需输入的配置文件,如下所示:

[root@centos8-1 certs]# cat self_signed_certificate.cnf
[req]
distinguished_name = req_distinguished_name
prompt = no
[req_distinguished_name]
C = IN
ST = Karnataka
L = Banaglore
O = GoLinuxCloud
OU = SDM
CN = centos8-1

现在使用此配置文件创建CSR (如果已经创建了server.csr,则可以忽略此设置):

[root@centos8-1 certs]# openssl req -new -key server.key -out server.csr -passin file:mypass.enc -config self_signed_certificate.cnf

在这里,我们-config用来从self_signed_certificate.cnf文件中获取输入。但是,请确保根据服务器主机名更改CN值。

使用openssl x509创建自签名证书

  • openssl x509命令是一个多用途证书实用程序。
  • 它可用于显示证书信息,将证书转换为各种形式,签署证书请求(例如“迷你CA”)或编辑证书信任设置
  • 创建自签名证书的最后一步是对证书签名请求进行签名。
  • 在此示例中,openssl证书将持续365天。
  • 我们将使用私钥server.keyserver.csr对证书进行签名并生成自签名证书server.crt
[root@centos8-1 certs]# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt -passin file:mypass.enc
Signature ok
subject=C = IN, ST = Karnataka, L = Banaglore, O = GoLinuxCloud, OU = SDM, CN = centos8-1
Getting Private key

因此,openssl已成功创建了自签名证书 server.crt

OpenSSL验证证书内容

在本文中,我们创建了以下证书

  • server.key⇒私钥
  • server.csr⇒证书签名请求
  • server.crt⇒自签名证书

可以使用openssl查看自签名证书和其他文件的内容:

# openssl rsa -noout -text -in server.key
# openssl req -noout -text -in server.csr
# openssl x509 -noout -text -in server.crt

Openssl自签名证书,无密码

在本节中,我将分享创建无密码的openssl自签名证书的示例。
所有命令和步骤都将与上面用于生成自签名证书的步骤相同,唯一的区别是在步骤1中创建私钥时,我们将不使用任何加密方法。

OpenSSL生成私钥

本章节将以openssl genrsa为示例,我们将不使用任何加密:

[root@centos8-1 certs]# openssl genrsa -out server-noenc.key 4096 -nodes
Generating RSA private key, 4096 bit long modulus (2 primes)
................................................................++++
...................................................................................................++++
e is 65537 (0x010001)

openssl生成私钥在没有提示任何口令的情况下被执行。现在,由于我们使用`-nodes·了不带密码短语的私钥,因此将使用该密钥创建我们的CSR并签署证书,其余的openssl命令将不会提示您输入任何密码短语。

创建证书签名请求(CSR)证书

接下来,我们将使用我们的私钥创建CSR证书。再次确保提供正确的“Common Name”值,并且该值应与打算使用此证书的服务器详细信息的主机名/ FQDN相匹配。

[root@centos8-1 certs]# openssl req -new -key server-noenc.key -out server-noenc.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]:IN
State or Province Name (full name) []:KARNATAKA
Locality Name (eg, city) [Default City]:BENGALURU
Organization Name (eg, company) [Default Company Ltd]:GoLinuxCloud
Organizational Unit Name (eg, section) []:R&D
Common Name (eg, your name or your server's hostname) []:centos8-1
Email Address []:admin@golinuxcloud.com

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

要再次自动执行此步骤,可以创建我们在此步骤中创建的配置文件…。

使用openssl x509创建自签名证书

现在,在最后一步中使用openssl x509,我们将使用server-noenc.key和创建并签署我们的证书server-noenc.csr

[root@centos8-1 certs]# openssl x509 -req -days 365 -in server-noenc.csr -signkey server-noenc.key -out server-noenc.crt
Signature ok
subject=C = IN, ST = KARNATAKA, L = BENGALURU, O = GoLinuxCloud, OU = R&D, CN = centos8-1, emailAddress = admin@golinuxcloud.com
Getting Private key

OpenSSL验证证书内容

在本章节中,我们创建了以下证书

  • server-noenc.key⇒私钥
  • server-noenc.csr⇒证书签名请求
  • server-noenc.crt⇒自签名证书

可以使用openssl查看自签名证书和其他文件的内容:

#openssl rsa -noout -text -in server-noenc.key
#openssl req -noout -text -in server-noenc.csr
#openssl x509 -noout -text -in server-noenc.crt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值