在本地主机上获取SSL证书

时间:2018-11-16 22:54:39

标签: security ssl server

我正在创建服务器客户端应用程序,我想获取证书。我试图找到一些教程,例如,我发现了这一点:

openssl req -x509 -out localhost.crt -keyout localhost.key \
 -newkey rsa:2048 -nodes -sha256 \
 -subj '/CN=localhost' -extensions EXT -config <( \
 printf "[dn]\nCN=localhost\n[req]\ndistinguished_name = dn\n[EXT]\nsubjectAltName=DNS:localhost\nkeyUsage=digitalSignature\nextendedKeyUsage=serverAuth")

但是我收到了“找不到文件”。请告诉我该怎么做。

2 个答案:

答案 0 :(得分:0)

使用EasyRSA可能是最简单的方式,这样您可以设置CA,然后可以根据需要签署任意数量的证书,并获得可以插入客户端的密钥,这样他们就不会再抱怨自签名证书了。

它随OpenVPN一起分发,但无需OpenVPN即可轻松使用。

请记住,现代浏览器需要SAN(主题备用名称),如果只有CN(通用名称),他们会感到不满意。

https://github.com/OpenVPN/easy-rsa

方法:

  • 在vars文件中设置变量

  • 初始化pki:

    ./easyrsa init-pki

  • 构建rootCA:

    ./easyrsa build-ca

  • 同时为example.com生成通配符的密钥和证书

    ./easyrsa --subject-alt-name=DNS:example.com,DNS:\*.example.com build-server-full example.com nopass

密钥和证书将位于pki子目录中的树中。

答案 1 :(得分:0)

使用以下代码生成证书。在文件夹中创建这些文件。使用命令提示符浏览(“ cd”)到该文件夹​​,然后运行不带引号的“ bash generate.sh”。请注意,您需要安装bash。如果您已经安装了git-scm,那么您应该已经有bash了。然后,将生成一个名为证书的文件夹。如果要git clone 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