我正在为嵌入式Linux设备添加HTTPS支持。我已尝试使用以下步骤生成自签名证书:
openssl req -new > cert.csr
openssl rsa -in privkey.pem -out key.pem
openssl x509 -in cert.csr -out cert.pem -req -signkey key.pem -days 1001
cat key.pem>>cert.pem
这是可行的,但我在Google Chrome上遇到了一些错误:
这可能不是你要找的网站!站点的安全证书不受信任!
我错过了什么吗?这是构建自签名证书的正确方法吗?
我不能评论,所以我将把这作为一个单独的答案。我发现了一些公认的单线回答的问题:
一行代码在密钥中包含一个口令。一行程序使用SHA-1,在许多浏览器中,SHA-1会在控制台中抛出警告。
下面是一个简化版本,它删除了密码短语,提高了安全性以抑制警告,并在注释中包含了一个建议,即传递-subj以删除完整的问题列表:
openssl genrsa -out server.key 2048
openssl rsa -in server.key -out server.key
openssl req -sha256 -new -key server.key -out server.csr -subj '/CN=localhost'
openssl x509 -req -sha256 -days 365 -in server.csr -signkey server.key -out server.crt
将“localhost”替换为所需的任何域。您需要逐个运行前两个命令,因为OpenSSL将提示输入密码短语。
要将两者合并为.pem文件,请执行以下操作:
cat server.crt server.key > cert.pem
一般程序正确。命令的语法如下。
openssl req -new -key {private key file} -out {output file}
但是,会显示警告,因为浏览器无法通过使用已知的证书颁发机构(CA)验证证书来验证标识。
由于这是一个自签名证书,因此没有CA,您可以安全地忽略警告并继续。如果你想获得一个真正的证书,在公共互联网上任何人都可以识别,那么程序如下。
生成私钥使用该私钥创建CSR文件向CA提交CSR(威瑞信或其他公司等)在web服务器上安装从CA接收的证书根据cert类型将其他证书添加到身份验证链
我在《安全连接:使用OpenSSL创建安全证书》的一篇文章中了解了更多关于这一点的详细信息