我已生成自认证 SSL 证书,用于测试新网站。现在网站即将上线,我想从 GeoTrust 购买证书。我可以使用为自认证生成的相同 CSR 吗,还是需要创建一个新的?
富有的
答案1
只要您使用相同的密钥、域(又名通用名称)、联系方式和有效期,您就应该能够使用相同的 CSR。
虽然说实话生成 CSR 是一项非常简单的工作,所以如果您需要修改联系方式(很多 SSL 提供商对此都很严格),这并不是什么大问题。
答案2
对于您的示例,我认为不值得尝试重复使用 CSR。但是,对于像我这样的大型多元化 Apple iOS 开发人员团队来说,这样做是有充分理由的。我们创建(实际上是要求 Apple 创建)所有签名证书和推送证书,这些证书都来自同一个私钥。这样,我们就可以轻松地在 85 多个应用程序上进行协作。出于这个原因,我们保留一个 CSR,只要密钥有效,就始终使用同一个 CSR。
据我所知,没有理由从单个私钥重复生成 CSR。如果我错了,我很乐意被纠正。
答案3
拥有有限期限证书的主要好处是,如果您的私钥被泄露,可以减少损失。如果您重复使用 CSR,拥有私钥的人可以永远冒充您,因为重复使用 CSR 也意味着重复使用您的私钥。
请不要这样做,最好自动生成私钥和 CSR,并找到方便的方法将不断变化的私钥分发到应用程序构建服务器和推送服务器。大多数普通开发人员通常不需要为应用商店进行发布/分发构建,因此不需要私钥。
答案4
理论上你确实可以重复使用相同的 CSR,因为这只是一个容器,
- 你的公钥(仅数字用于 RSA 加密(具体数学))
- 您的“主题”详细信息(您是谁、哪个域名等...)文本用于识别该公钥的所有者
这就是证书(公钥证书的简称)的意义所在
但是正如其他答案所指出的那样,定期更改私钥是一种很好的做法,因此这意味着需要新的证书和新的 CSR 来获取它。
您可以轻松查看 CSR 的内容
例如
$ openssl req -new -batch -subj "/CN=My Common Name/OU=My Org Unit/O=My Organisation" -sha256 -newkey rsa:2048 -keyout private.key -nodes -out request.csr
Generating a 2048 bit RSA private key
.............................................................................................+++++
.........+++++
writing new private key to 'private.key'
-----
$ ls
private.key // keep that private, the PublicKey side is easily be generated from this
request.csr // your PublicKey + Subject details
企业社会责任
$ openssl req -in request.csr -text -noout
Certificate Request:
Data:
Version: 1 (0x0)
Subject: CN = My Common Name, OU = My Org Unit, O = My Organisation
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public-Key: (2048 bit)
Modulus: ///////// Matches the PrivateKey modulus
00:b1:e8:de:e6:bf:21:45:51:75:15:23:5e:6e:7a:
7d:95:53:e5:d5:ec:5b:38:cd:7f:38:2d:53:8a:54:
...
fe:b5:78:de:9b:c1:ee:c1:51:6f:fd:fb:0e:62:09:
03:87
Exponent: 65537 (0x10001) ///////// Matches the PrivateKey publicExponent
Attributes:
a0:00
Signature Algorithm: sha256WithRSAEncryption
a1:44:1f:b2:ec:c0:82:bc:99:da:69:ce:3e:77:9f:46:51:95:
...
3b:2d:84:e3:73:ac:be:c8:da:29:fd:62:90:11:dd:8a:a6:4f:
7b:f8:ac:f1
和私钥
$ openssl rsa -in private.key -text -noout
// all the below are numbers that takes part in Mathematical encryption (search for RSA maths)
RSA Private-Key: (2048 bit, 2 primes)
// The Numbers that can be freely published
modulus:
00:b1:e8:de:e6:bf:21:45:51:75:15:23:5e:6e:7a:
7d:95:53:e5:d5:ec:5b:38:cd:7f:38:2d:53:8a:54:
...
fe:b5:78:de:9b:c1:ee:c1:51:6f:fd:fb:0e:62:09:
03:87
publicExponent: 65537 (0x10001)
// The Numbers that must be kept private !
privateExponent:
0a:81:73:d8:30:65:28:90:bc:d7:38:b5:74:d4:aa:
...
b1:9b:30:2e:a2:dd:46:c1:10:0f:b0:da:ac:b6:ea:
01
prime1:
00:e0:28:01:87:95:70:d0:b8:21:07:e0:4f:96:a6:
...
66:28:8f:3d:d7:eb:e6:b4:81
prime2:
00:cb:2e:fe:1b:b6:30:ea:8d:9e:6d:23:83:d8:b6:
...
4d:64:39:5c:9c:18:a0:14:07
exponent1:
22:e2:36:f2:b9:af:f7:db:5f:d0:90:f8:f1:d1:ff:
...
3a:31:a8:87:2c:c0:17:81
exponent2:
5a:8b:3d:77:f1:ef:c8:86:85:a4:13:20:8d:31:a4:
...
a5:ba:1e:37:fd:8d:50:7f
coefficient:
00:d3:d3:b6:81:4b:a9:c2:aa:ff:e1:07:cb:de:ea:
...
5c:e9:3b:d3:f7:67:82:c3:7f