我正在尝试安装这个项目:https://github.com/versatica/mediasoup-demo
需要fullchain.pem
和privkey.pem
文件。我如何在Ubuntu 20上使用openssl或类似的东西生成这些?
openssl genrsa > privkey.pem
openssl req -new -x509 -key privkey.pem > fullchain.pem
虽然公认的答案似乎有效(部分有效),但它有缺陷。下面提供了自签名证书所需的大部分内容:
openssl req -new -x509 -nodes -subj "/CN=my.root" -newkey rsa:2048 -keyout ca.key -out ca.crt -reqexts v3_req -extensions v3_ca
openssl req -new -nodes -sha256 -newkey rsa:2048 -keyout domain.key -config ext.conf -out domain.csr
openssl x509 -req -in domain.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out domain.crt -days 500 -sha256 -extfile ext.conf -extensions req_ext
样本ext.conf
:
[req]
default_bits = 2048
prompt = no
default_md = sha256
req_extensions = req_ext
distinguished_name = some_dn
[some_dn]
C = US
ST = Florida
L = Jacksonville
O = SomeOrg
emailAddress = some@email.com
CN = thedomain.com
[req_ext]
subjectAltName = @alt_names
[alt_names]
DNS.1 = otherdomain.com
IP.1 = 1.2.3.4
指出:
- 运行
cp domain.key privkey.pem
&cat domain.crt ca.crt > fullchain.pem
获取OP提到的文件。(与接受的答案不同,全链必须包含CA)。 - 省略
-nodes
,如果你希望密钥有一个密码短语。 - 在
ext.conf
中,CN
是您的域&alt_names
包含它的别名(特别是如果你的服务器还没有指向一个域,把你的IP放在这里)。 - 在客户端安装
ca.crt
作为根CA,以便您的证书被识别。 -reqexts v3_req -extensions v3_ca
确保CA证书与android客户端兼容。