iis服务器助手广告广告
返回顶部
首页 > 资讯 > 操作系统 >linux中如何使用OpenSSL来处理SSL证书
  • 561
分享到

linux中如何使用OpenSSL来处理SSL证书

2023-06-16 00:06:03 561人浏览 薄情痞子
摘要

这篇文章主要介绍linux中如何使用OpenSSL来处理SSL证书,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!OpenSSL 是一个多功能的命令行工具,可以用于与公钥基础设施(Public Key Infrastr

这篇文章主要介绍linux中如何使用OpenSSL来处理SSL证书,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

OpenSSL 是一个多功能的命令行工具,可以用于与公钥基础设施Public Key Infrastructure(PKI)和 httpsHttp over TLS)相关的大量任务。这本小抄风格的指南提供了 OpenSSL 命令的快速参考,这些命令在常见的日常场景中非常有用。这包括生成私钥、证书签署请求certificate signing request(CSR)和证书格式转换的 OpenSSL 示例,但它并没有涵盖 OpenSSL 的所有用途。

如何使用本指南

  • 如果你不熟悉证书签署请求(CSR),请阅读第一部分。

  • 除了第一部分,本指南采用了简单的小抄格式:自带了命令行代码片段。

  • 跳到与你准备完成的任务相关的任何部分。

  • 大多数命令都是单行的,为了清晰起见,已经扩展到多行(使用 \ 符号)。

关于证书签署请求(CSR)

如果你想从证书颁发机构certificate authority(CA)那里获得 SSL 证书,你必须生成一个证书签署请求certificate signing request(CSR)。一个 CSR 主要是由一个密钥对的公钥和一些附加信息组成。当证书被签署时,这两部分都会被插入到证书中。

每当你生成一个 CSR 时,你会被提示提供有关证书的信息。这些信息被称为区分名称Distinguised Name(DN)。DN 中的一个重要字段是通用名称Common Name(CN),它应该是你打算使用证书的主机的完全合格域名Fully Qualified Domain Name(FQDN)。当创建 CSR 时,也可以通过命令行或文件传递信息来跳过交互式提示。

DN 中的其他项目提供了有关你的业务或组织的附加信息。如果你是从证书机构购买 SSL 证书,通常要求这些附加字段(如“组织Organization”)准确地反映你的组织的详细信息。

下面是一个 CSR 信息提示的例子:

---Country Name (2 letter code) [AU]:USState or Province Name (full name) [Some-State]:New YorkLocality Name (eg, city) []:BrooklynOrganization Name (eg, company) [Internet Widgits Pty Ltd]:Example Brooklyn CompanyOrganizational Unit Name (eg, section) []:Technology DivisionCommon Name (e.g. server FQDN or YOUR name) []:examplebrooklyn.comEmail Address []:

如果你想非交互式地回答 CSR 信息提示,你可以通过在任何请求 CSR 信息的 OpenSSL 命令中添加 -subj 选项来实现。这里是该选项的一个例子,使用上面代码块中显示的相同信息:

-subj "/C=US/ST=New York/L=Brooklyn/O=Example Brooklyn Company/CN=examplebrooklyn.com"

现在你已经了解了 CSR,可以自由跳转到本指南中涵盖你的 OpenSSL 需求的任何一节。

生成 CSR

本节介绍了与生成 CSR(以及私钥,如果它们还不存在的话)有关的 OpenSSL 命令。CSR 可以用来向证书颁发机构请求 SSL 证书。

请记住,你可以通过上一节中提到的 -subj 选项非交互式地添加 CSR 信息。

生成一个私钥和一个 CSR

如果你想使用 HTTPS(HTTP over TLS)来保护你的 Apache HTTP 或 Nginx WEB   服务器安全,并且你想使用一个证书颁发机构(CA)来颁发 SSL 证书,那么就使用这个方法。生成的 CSR 可以发送给 CA,请求签发由 CA   签名的 SSL 证书。如果你的 CA 支持 SHA-2,请添加 -sha256 选项,用 SHA-2 签署 CSR。

这条命令从头开始创建一个 2048 位的私钥(domain.key)和一个 CSR(domain.csr):

openssl req \       -newkey rsa:2048 -nodes -keyout domain.key \       -out domain.csr

回答 CSR 信息提问,完成该过程。

选项 -newkey rsa:2048 指定密钥应该是 2048 位,使用 RSA 算法生成。选项 -nodes 指定私钥没有用密码加密。这里没有包含 -new 选项,而是隐含在其中,表示正在生成一个 CSR。

从现有的私钥中生成一个 CSR

如果你已经有了私钥,并想用它向 CA 申请证书,请使用这个方法。

该命令基于现有的私钥(domain.key)创建一个新的 CSR(domain.csr):

openssl req \       -key domain.key \       -new -out domain.csr

回答 CSR 信息提问,完成该过程。

选项 -key 指定一个现有的私钥(domain.key),它将被用来生成一个新的 CSR。选项 -new 表示正在生成一个 CSR。

从现有的证书和私钥生成 CSR

如果你想更新现有的证书,但由于某些原因,你或你的 CA 没有原始的 CSR,请使用这个方法。基本上可以省去重新输入 CSR 信息的麻烦,因为它是从现有证书中提取信息的。

该命令基于现有的证书(domain.crt)和私钥(domain.key)创建一个新的 CSR(domain.csr):

openssl x509 \       -in domain.crt \       -signkey domain.key \       -x509toreq -out domain.csr

选项 -x509toreq 指定你使用一个 X509 证书来制作 CSR。

生成 SSL 证书

如果你想使用 SSL 证书来确保服务的安全,但你不需要 CA 签名的证书,一个有效的(和免费的)解决方案是签署你自己的证书。

你可以自己签发的一种常见证书是自签证书self-signed certificate。自签证书是用自己的私钥签署的证书。自签证书和 CA 签名证书一样可以用来加密数据,但是你的用户会显示一个警告,说这个证书不被他们的计算机或浏览器信任。因此,只有当你不需要向用户证明你的服务身份时,才可以使用自签名证书(例如非生产或非公开服务器)。

本节介绍与生成自签名证书相关的 OpenSSL 命令。

生成自签证书

如果你想使用 HTTPS(HTTP over TLS)来保护你的 Apache HTTP 或 Nginx Web 服务器,并且你不需要你的证书由 CA 签名,那么就使用这个方法。

这个命令可以从头开始创建一个 2048 位的私钥(domain.key)和一个自签证书(domain.crt):

openssl req \       -newkey rsa:2048 -nodes -keyout domain.key \       -x509 -days 365 -out domain.crt

回答 CSR 信息提问,完成该过程。

选项 -x509 告诉 req 子命令创建一个自签名的证书。-days 365 选项指定证书的有效期为 365 天。它会生成一个临时的 CSR,以收集与证书相关的信息。

从现有私钥生成自签名证书

如果你已经有了一个私钥,并且你想用它来生成一个自签证书,请使用这个方法。

这条命令可以从现有的私钥(domain.key)中创建一个自签证书(domain.crt):

openssl req \       -key domain.key \       -new \       -x509 -days 365 -out domain.crt

回答 CSR 信息提问,完成该过程。

选项 -x509 告诉 req 子命令创建一个自签证书。-days 365 选项指定证书的有效期为 365 天。选项 -new 启用 CSR 信息提问。

从现有的私钥和 CSR 生成自签证书

如果你已经有了私钥和 CSR,并且你想用它们生成一个自签证书,请使用这个方法。

这条命令将从现有的私钥(domain.key)和(domain.csr)中创建一个自签证书(domain.crt)。

openssl x509 \       -signkey domain.key \       -in domain.csr \       -req -days 365 -out domain.crt

选项 -days 365 指定证书的有效期为 365 天。

查看证书

证书和 CSR 文件是以 PEM 格式编码的,不适合被人读取。

本节介绍的 OpenSSL 命令将输出 PEM 编码文件的实际条目。

查看 CSR 条目

该命令允许你查看和验证纯文本的 CSR(domain.csr)的内容:

  1. openssl req \
          -text -noout -verify \
          -in domain.csr

查看证书条目

该命令允许你查看纯文本证书(domain.crt)的内容:

  1. openssl x509 \
          -text -noout \
          -in domain.crt

验证证书由 CA 签署

使用此命令验证证书(domain.crt)是否由特定的 CA 证书(ca.crt)签署:

  1. openssl verify \
          -verbose -CAFile ca.crt \
          domain.crt

私钥

本节介绍了用于创建和验证私钥的 OpenSSL 命令。

创建私钥

使用该命令创建一个受密码保护的 2048 位私钥(domain.key):

  1. openssl genrsa \
          -des3 -out domain.key 2048

在提示时输入密码以完成该过程。

验证私钥

使用此命令检查私钥(domain.key)是否为有效密钥:

  1. openssl rsa \
          -check -in domain.key

如果你的私钥已经加密,系统会提示你输入它的密码,成功后,未加密的密钥会在终端上输出。

验证私钥是否与证书和 CSR 匹配

使用这些命令来验证私钥(domain.key)是否匹配证书(domain.crt)和 CSR(domain.csr):

openssl rsa  -noout -modulus -in domain.key | openssl md5openssl x509 -noout -modulus -in domain.crt | openssl md5openssl req  -noout -modulus -in domain.csr | openssl md5

如果每条命令的输出都是相同的,那么私钥、证书和 CSR 就极有可能是相关的。

加密私钥

这需要一个未加密的私钥(unencrypted.key),并输出它的加密版本(encrypted.key):

openssl rsa -des3 \       -in unencrypted.key \       -out encrypted.key

输入你所需的密码,以加密私钥。

解密私钥

这需要一个加密的私钥(encrypted.key),并输出一个解密的版本(decrypted.key):

openssl rsa \       -in encrypted.key \       -out decrypted.key

在提示时,输入加密密钥的密码。

转换证书格式

我们一直在使用的所有证书都是 ASCII 码 PEM 编码的 X.509 证书。还有很多其他的证书编码和容器类型;一些应用程序喜欢某些格式而不是其他格式。此外,这些格式中的许多格式可以在一个文件中包含多个项目,如私钥、证书和 CA 证书。

OpenSSL 可以用来将证书在则西格式间转换。本节将介绍一些可能的转换。

将 PEM 转换为 DER

如果要将 PEM 编码的证书(domain.crt)转换为 DER 编码的证书(domain.der),即二进制格式,请使用此命令:

openssl x509 \       -in domain.crt \       -outfORM der -out domain.der

DER 格式通常与 Java 一起使用。

将 DER 转换为 PEM

如果要将 DER 编码的证书(domain.der)转换为 PEM 编码的证书(domain.crt),请使用此命令:

openssl x509 \       -inform der -in domain.der \       -out domain.crt
将 PEM 转换为 PKCS7

如果你想把 PEM 证书(domain.crtca-chain.crt)添加到 PKCS7 文件(domain.p7b)中,请使用该命令:

openssl crl2pkcs7 -nocrl \       -certfile domain.crt \       -certfile ca-chain.crt \       -out domain.p7b

请注意,你可以使用一个或多个 -certfile 选项来指定要添加到 PKCS7 文件中的证书。

PKCS7 文件,也被称为 P7B,通常用于 Java Keystores 和 Microsoft IIS(windows)。它们是 ASCII 文件,可以包含证书和 CA 证书。

将 PKCS7 转换为 PEM

如果你想将 PKCS7 文件(domain.p7b)转换为 PEM 文件,请使用该命令:

openssl pkcs7 \       -in domain.p7b \       -print_certs -out domain.crt

请注意,如果你的 PKCS7 文件中有多个项目(如证书和 CA 中间证书),创建的 PEM 文件将包含其中的所有项目。

将 PEM 转换为 PKCS12

如果你想使用私钥(domain.key)和证书(domain.crt),并将它们组合成一个 PKCS12 文件(domain.pfx),请使用这个命令:

openssl pkcs12 \       -inkey domain.key \       -in domain.crt \       -export -out domain.pfx

系统会提示你输入导出密码,你可以留空。请注意,在这种情况下,你可以通过将多个证书连接到一个 PEM 文件(domain.crt)中来添加一个证书链到 PKCS12 文件中。

PKCS12 文件,也被称为 PFX 文件,通常用于在 Micrsoft IIS(Windows)中导入和导出证书链。

将 PKCS12 转换为 PEM

如果你想转换 PKCS12 文件(domain.pfx)并将其转换为 PEM 格式(domain.combined.crt),请使用此命令:

openssl pkcs12 \       -in domain.pfx \       -nodes -out domain.combined.crt

请注意,如果你的 PKCS12 文件中有多个项目(如证书和私钥),创建的 PEM 文件将包含其中的所有项目。

OpenSSL 版本

openssl version 命令可以用来检查你正在运行的版本。你正在运行的 OpenSSL 版本,以及编译时使用的选项会影响到你可以使用的功能(有时也会影响到命令行选项)。

下面的命令显示了你正在运行的 OpenSSL 版本,以及它被编译时的所有选项:

openssl version -a

本指南是使用具有如下细节的 OpenSSL 二进制文件编写的(参见前面命令的输出):

OpenSSL 1.0.1f 6 Jan 2014built on: Mon Apr  7 21:22:23 UTC 2014platform: debian-amd64options:  bn(64,64) rc4(16x,int) des(idx,cisc,16,int) blowfish(idx)compiler: cc -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -DTERMIO -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wa,--noexecstack -Wall -DMD32_REG_T=int -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASMOPENSSLDIR: "/usr/lib/ssl"

以上是“linux中如何使用OpenSSL来处理SSL证书”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网操作系统频道!

--结束END--

本文标题: linux中如何使用OpenSSL来处理SSL证书

本文链接: https://www.lsjlt.com/news/281910.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • linux中如何使用OpenSSL来处理SSL证书
    这篇文章主要介绍linux中如何使用OpenSSL来处理SSL证书,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!OpenSSL 是一个多功能的命令行工具,可以用于与公钥基础设施(Public Key Infrastr...
    99+
    2023-06-16
  • 如何使用 OpenSSL 生成 MySQL SSL 证书
    如何使用 OpenSSL 生成 MySQL SSL 证书简介:MySQL 是一种广泛应用的关系型数据库系统,在实际生产环境中使用 SSL(Secure Sockets Layer)协议进行加密通信是非常重要的。本文将介绍如何使用 OpenS...
    99+
    2023-10-22
    MySQL openssl SSL证书
  • ssl证书如何使用
    要使用SSL证书,您需要按照以下步骤进行操作:1. 获取SSL证书:您可以从认可的证书颁发机构(CA)购买SSL证书,或者使用免费的...
    99+
    2023-08-25
    ssl证书
  • 如何使用ssl证书
    使用SSL证书的步骤如下:1. 购买SSL证书:选择一个可信赖的SSL证书提供商,并购买适合您需求的证书。通常,您需要提供一些个人和...
    99+
    2023-09-07
    ssl证书
  • 如何办理ssl证书
    要办理SSL证书,可以按照以下步骤进行:1. 选择SSL证书类型:根据自己的需求选择合适的SSL证书类型,如域名验证(DV)、组织验...
    99+
    2023-08-16
    ssl证书
  • 如何办理SSL证书?
    如何办理SSL证书?在当前数字化时代,网络安全成为越来越重要的问题。很多网站都采取了SSL证书来保护用户数据的安全性。办理SSL证书可以为您的网站提供加密保护,防止敏感信息泄露和黑客攻击。本文将介绍如何办理SSL证书的步骤和注意事项。 ...
    99+
    2024-01-24
    办理SSL证书 如何办理SSL证书 如何办理SSL证书?这里告诉你 SSL知识
  • PHP 使用cURL 相关函数来设置代理、处理 SSL 证书
    设置代理: 如果你需要通过代理服务器访问目标网址,你可以使用以下 cURL 相关函数来设置代理: curl_setopt($ch, CURLOPT_PROXY, 'proxy.example.com:8080');:设置代理服务器的地址和端...
    99+
    2023-09-03
    php ssl 服务器
  • linux下如何更新ssl证书
    要在Linux下更新SSL证书,可以按照以下步骤进行操作:1. 确定要更新的SSL证书文件的位置。通常情况下,SSL证书文件位于/e...
    99+
    2023-08-15
    linux ssl证书
  • ssl证书通配符如何使用
    通配符 SSL 证书通常用于为主域名和其相关的子域名提供加密保护。下面是使用通配符 SSL 证书的几个步骤:1. 生成证书签名请求(...
    99+
    2023-09-05
    ssl证书
  • 使用ssl证书有哪些好处
    使用SSL证书有以下好处:1. 数据加密:SSL证书通过加密数据通信,保护信息在传输过程中不被窃取、篡改或伪造。这对于网站上的敏感信...
    99+
    2023-08-16
    ssl证书
  • SSL证书安全检验失败如何处理
    SSL证书安全检验失败可能是由于证书过期、证书无效、证书链不完整等原因导致的。处理方法如下: 检查证书有效性:确保证书未过期,并且...
    99+
    2024-05-09
    SSL证书
  • 虚拟空间ssl证书如何使用
    要在虚拟空间上使用 SSL 证书,您需要完成以下步骤:1. 获取 SSL 证书:您可以从可信的 SSL 证书颁发机构(CA)购买 S...
    99+
    2023-09-04
    ssl证书
  • ssl证书服务端如何管理
    服务端管理SSL证书的关键是确保证书的安全性和有效性。以下是一些管理SSL证书的最佳实践:1. 选择信任的证书颁发机构(CA):选择...
    99+
    2023-08-16
    ssl证书
  • Linux下OpenSSL客户端中使用req命令来生成证书的操作方法
    这篇文章给大家介绍Linux下OpenSSL客户端中使用req命令来生成证书的操作方法,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。openssl req 用于生成证书请求,以让第三方权威机构CA来签发,生成我们需要的...
    99+
    2023-06-12
  • PHP中怎么使用OpenSSL加密中的证书
    小编给大家分享一下PHP中怎么使用OpenSSL加密中的证书,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!PHP的OpenSSL加密扩展学习(三):证书操作关于对称和非对称的加密操作,我们已经学习完两篇文章的内容了,接下来...
    99+
    2023-06-15
  • 详解如何使用openssl创建自签名证书
    目录概览&证书的结构&证书验签创建根证书创建根密钥 ca.key.pem创建根证书 ca.crt.pem* 创建根证书 ca.csr.pem ca.crt.pem查看...
    99+
    2023-05-17
    openssl创建自签名证书 openssl 签名证书
  • Tomcat中如何配置SSL证书
    要在Tomcat中配置SSL证书,需要执行以下步骤: 生成SSL证书和私钥:可以使用keytool工具来生成SSL证书和私钥。例如...
    99+
    2024-04-24
    Tomcat
  • 如何激活及使用Namecheap的SSL证书
    本篇内容介绍了“如何激活及使用Namecheap的SSL证书”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在Namecheap购买域名的同时...
    99+
    2023-06-12
  • 如何使用acme.sh注册免费的ssl证书
    本篇内容介绍了“如何使用acme.sh注册免费的ssl证书”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!先决条件:首先我们需要有一个域名和一...
    99+
    2023-07-05
  • 如何启用或禁止SSL证书
    这篇文章给大家介绍如何启用或禁止SSL证书,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。如何启用或禁止SSL证书?购买过SSL证书之后是将证书部署到网站上,那么部署过SSL网站时候是否万事大吉了呢?显然不是的,我们需要...
    99+
    2023-06-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作