我正在创建come-server客户端应用程序,我想获得证书。我试着找到一些教程,例如我发现了这个:
openssl req -x509 -out localhost.crt -keyout localhost.key
-newkey rsa:2048 -nodes -sha256
-subj '/CN=localhost' -extensions EXT -config <(
printf "[dn]nCN=localhostn[req]ndistinguished_name = dnn[EXT]nsubjectAltName=DNS:localhostnkeyUsage=digitalSignaturenextendedKeyUsage=serverAuth")
但我得到了"找不到文件"。请告诉我怎么做。
使用EasyRSA可能是最容易的,这样你就可以设置一个CA,然后根据需要签署尽可能多的证书,并获得一个可以插入客户端的密钥,这样他们就不会再抱怨自签名证书了。
它与OpenVPN一起分发,但在没有OpenVPN的情况下可以轻松使用。
请记住,现代浏览器想要一个SAN(使用者备用名称(,如果只有CN(通用名称(,他们会不高兴。
https://github.com/OpenVPN/easy-rsa
如何:
-
在vars文件中设置变量
-
初始化pki:
./easyrsa init-pki
-
构建rootCA:
./easyrsa build-ca
-
一次性生成密钥和证书,例如.com,也用于通配符
./easyrsa --subject-alt-name=DNS:example.com,DNS:*.example.com build-server-full example.com nopass
密钥和证书将在pki子目录中的树中。
使用以下代码生成证书。在文件夹中创建这些文件。使用命令提示符导航("cd"(到该文件夹,然后运行不带引号的"bash-generate.sh"。请注意,您需要安装bash。如果您已经安装了git-scm,那么您应该已经安装了bash。然后应该生成一个名为certificates的文件夹。如果你想git克隆GitHub项目,链接是https://github.com/micsel/generate-trusted-ssl-certificate
generate.sh
#!bin/bash
if [ ! -d $PWD/certificates ]; then
mkdir -p $PWD/certificates;
fi
openssl req
-newkey rsa:2048
-x509
-nodes
-keyout certificates/server.key
-new
-out certificates/server.crt
-config ./openssl-custom.cnf
-sha256
-days 365
openssl req
-newkey rsa:2048
-x509
-nodes
-keyout certificates/key.pem
-new
-out certificates/cert.pem
-config ./openssl-custom.cnf
-sha256
-days 365
openssl-custom.cnf
[req]
default_bits = 2048
prompt = no
default_md = sha256
x509_extensions = v3_req
distinguished_name = dn
[dn]
C = UK
L = Olathe
O = Dev
OU = Dev Department
emailAddress = youremail@yourdomain.com
CN = localhost
[v3_req]
subjectAltName = @alt_names
[alt_names]
DNS.1 = *.localhost
DNS.2 = localhost