安全与加密常识(4)证书签名请求(CSR)

文章目录

什么是CSR

证书签名请求(Certificate Signing Request,简称CSR)是一个由申请证书的实体(如公司或个人)生成的文件,其中包含申请者的公钥和身份信息(如组织名称、通用名、地点等)。CSR主要用于在数字证书认证过程中向证书颁发机构(Certificate Authority,CA)请求签名,以便获取一个受信任的数字证书。

CSR的主要组成部分:

  1. 公钥
    • CSR包含了申请者的公钥,此公钥将被包含在最终的证书中。
  2. 主体信息
    • 这些信息包括申请者的姓名、组织、部门、城市、州/省和国家等。它们用来标识证书的拥有者。
  3. 签名
    • CSR还包含了使用申请者的私钥创建的签名。这个签名是用来验证CSR中的信息是由拥有相应私钥的实体提交的,确保请求的合法性。

示例:

一个典型的CSR看起来如下(文本已简化):

复制代码
-----BEGIN CERTIFICATE REQUEST-----
MIIC2DCCAcACAQAwgYoxCzAJBgNVBAYTAkFVMQswCQYDVQQIDAJRVDEPMA0GA1UE
...
H5HQYKKoZIhvcNAQkUMRAwDgYDVQQDDAdteS5jb20wDQYJKoZIhvcNAQELBQAD
-----END CERTIFICATE REQUEST-----

这种格式叫PEM格式,所以csr文件的后缀名通常是pem,这种格式让CSR可以通过电子邮件或其他文本基础的传输方式进行发送,而无需担心内容的完整性和安全性。通过CSR,申请者可以从CA获得一个正式的数字证书,进而用于各种加密通讯和数据安全领域。

CSR的作用

  • 证书申请
    • 生成CSR是申请SSL/TLS证书的第一步。用户生成一个包含公钥和身份信息的CSR,并将其提交给CA。
  • 证书签发
    • CA验证CSR中的信息后,如果认为申请者是可信的,会使用CA的私钥对申请者的公钥进行签名,并发放数字证书。这个过程涉及到的安全措施确保了证书的有效性和信任度。
  • 密钥对控制
    • 在整个过程中,私钥始终由证书申请者保留,不需要提交给CA或其他任何第三方。这保证了密钥的安全性和私密性。

如何生成CSR

在Linux系统上生成CSR(Certificate Signing Request,证书签名请求)通常可以通过以下步骤完成,具体步骤如下:

  1. 生成私钥(Key): 使用openssl命令生成一个RSA私钥文件(通常是.pem格式),可以选择不同的位数,比如2048位或4096位:
shell 复制代码
$ openssl genrsa -out private.key 2048

这将生成一个2048位的RSA私钥文件 private.key

  1. 生成CSR: 使用刚刚生成的私钥文件来生成CSR。在生成CSR时,需要提供一些证书相关的信息,如国家代码、州、城市、组织名称、通用名称(主机名)等信息。可以通过交互式输入或者通过命令行参数提供这些信息。
shell 复制代码
$ openssl req -new -key private.key -out example.csr

这会提示你输入一些证书相关的信息,比如国家、州、城市等。最重要的是"Common Name",即你要申请证书的域名(如果是通配符证书,则是 *.example.com)。

如果你希望通过命令行参数提供这些信息,可以使用 -subj 选项,例如:

shell 复制代码
$ openssl req -new -key private.key -out example.csr \
       -subj "/C=US/ST=California/L=San Francisco/O=Example Inc/CN=example.com"

这里的 /C=US/ST=California/L=San Francisco/O=Example Inc/CN=example.com 是一个示例,你需要根据实际情况修改。

  1. CSR文件内容查看: 如果需要查看刚刚生成的CSR文件内容,可以使用以下命令:
shell 复制代码
$ openssl req -in example.csr -text -noout

这将显示CSR的详细信息,包括主体信息、公钥信息等。

生成CSR后,你可以将这个CSR文件提交给证书颁发机构(CA)来申请SSL证书或者其他类型的证书。

请注意,生成CSR和私钥时要妥善保管好私钥文件,因为私钥对于证书的安全性至关重要。

整个步骤是先生成公私钥,再生成证书请求,因为证书请求需要公私钥。这个过程可以一步到位:

shell 复制代码
openssl req -new -newkey rsa:2048 -out client.pem -keyout rsa.pem -batch -nodes
相关推荐
物联网软硬件开发-轨物科技16 小时前
【轨物方案】轨物科技低压综保智慧运维方案:以AIoT重塑电气安全与能效新范式
运维·科技·安全
尽兴-17 小时前
macOS 系统下 Chrome 浏览器安装 HTTPS 证书完整指南
chrome·macos·https·证书·ssl·pem·crt
jenchoi41321 小时前
【2025-11-04】软件供应链安全日报:最新漏洞预警与投毒预警情报汇总
安全·web安全·网络安全
电鱼智能的电小鱼1 天前
基于电鱼 AI 工控机的智慧工地视频智能分析方案——边缘端AI检测,实现无人值守下的实时安全预警
网络·人工智能·嵌入式硬件·算法·安全·音视频
kali-Myon1 天前
NewStarCTF2025-Week4-Web
sql·安全·web安全·php·ctf·ssti·ssrf
2501_915909061 天前
WebView 调试工具全解析,解决“看不见的移动端问题”
android·ios·小程序·https·uni-app·iphone·webview
一袋米扛几楼981 天前
【软件安全】什么是XSS(Cross-Site Scripting,跨站脚本)?
前端·安全·xss
倔强的石头1061 天前
KingbaseES:从兼容到超越,详解超越MySQL的权限隔离与安全增强
数据库·mysql·安全·金仓数据库
key061 天前
量子隐写术演进
安全
挨踢攻城1 天前
项目实战 | 新建校区网络安全项目:从搭建到交付
安全·web安全·公众号:厦门微思网络·华为网络安全项目·项目实战案例·网络安全项目·新建校区网络安全项目