我在 /etc/apache2/ssl/domain/ 中创建了一个 .csr 和 .key 文件
openssl req -new -newkey rsa:2048 -nodes -keyout domain.key -out domain.csr
就像 GoDaddy 所说,然后使用 apache 指令链接到这些文件:
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/domain/domain.com.csr
SSLCertificateKeyFile /etc/apache2/ssl/domain/domain.com.key
DocumentRoot /clients/domain.com/www/
ScriptAlias /cgi-bin/ /clients/domain.com/cgi/
ServerAlias domain.com www.domain.com *.domain.com
ServerName www.domain.com
ErrorLog /clients/domain.com/logs/error_log
LogFormat "%h %l %u %t \"%r\" %>s %b" common
CustomLog "|/usr/bin/cronolog /clients/domain.com/logs/%Y/%m/%d/access_log" combined
AddType application/x-httpd-php .html
<Directory />
Options -Indexes FollowSymLinks MultiViews
AllowOverride All
Order deny,allow
Allow from all
</Directory>
当我这样做的时候
apachectl configtest
它说语法正常,但启动失败:
[error] Init: Unable to read server certificate from file /etc/apache2/ssl/domain/domain.csr
[error] SSL Library Error: 218529960 error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
[error] SSL Library Error: 218595386 error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error
这似乎暗示了一个无效的 openssl cert 命令,或者我猜想的 apache2 指令不匹配,但我似乎找不到任何明显的东西。我在这个盒子的另一个虚拟域上运行了另一个 SSL GoDaddy 证书,我是否遗漏了一些明显的东西?我的 csr 看起来像:
-----BEGIN CERTIFICATE REQUEST-----
MIICiTCCAXECAQAwRDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMREwDwYDVQQH
EwhTYW5EaWVnbzEVMBMGA1UEChMMRmxpeXByb2R1Y3RzMIIBIjANBgkqhkiG9w0B
AQEFAAOCAQ8AMIIBCgKCAQEA0ZxcveaAefauZvSMiEAJZjhAKRqgym++IeIHEZ2D
PZ5vgp8vB4/UXUBtXQoEKrviCqJDkgzXUAviR3RLpbEMtS3RQdNjBnsVAe7GuAJ9
...
R5Bi9PaKwVOchbnKICZHWSiaDqIv3TOfT+KBcMDsnUzJbdhteUnIfk5VLdgJEuyS
IZiPnEHSh8aVhtfKzrnWYcY9ce3PEQZKfyF+o1lf7vEw80PTUfTD0PysOp20MmJK
5TaF8Zu0waKyilEhWyo7uKX8AsX/mjkl1QljPyHb+uGa7wIDAQABoAAwDQYJKoZI
hvcNAQEFBQADggEBAIVHReg+
-----END CERTIFICATE REQUEST-----
企业社会责任!= CER
您正在混淆证书请求和正确的证书。
您需要将您的 CSR 提交给证书颁发机构 (CA)。
然后,他们会将您的 CSR(和您的资金)转化为适当的 CER。
(如果您想跳过“金钱”步骤,您可能需要查看https://letsencrypt.org 。)
旁注:OpenSSL 错误消息通常很糟糕。