我有一个子域,我想安装一个有效的SSL(可能是免费的SSL)。我曾经通过服务器的公共地址访问我的网站。现在,我正在使用子域来访问我的网站。我想向服务器添加有效的SSL以保护我的网站。我正在使用XAMPP。如何正确安装SSL,因为当我使用HTTPS访问我的网站时,我会得到 NET :: ERR_CERT_AUTHORITY_INVALID ,并且在哪里可以获取有效的SSL证书?
答案 0 :(得分:0)
可以说,最受欢迎的免费SSL提供程序(以及我使用的一种)将是LetsEncrypt。
安装步骤因操作系统而异,例如适用于Ubuntu的this
答案 1 :(得分:0)
您可以从letsencrypt获得最受欢迎的免费SSL证书。
这里是您可以使证书在本地主机(XAMPP)上工作的步骤:
双击make-cert.bat并在出现提示时输入域site.test。只需输入其他问题,因为我们已经从cert.conf中设置了默认值。
双击server.crt在Windows上安装它,以便Windows可以信任它。
然后选择“将所有证书放入以下存储区”,然后单击浏览并选择“受信任的根证书颁发机构”。
5.1以管理员身份打开记事本。
5.2编辑C:\ Windows \ System32 \ drivers \ etc \ hosts(文件没有扩展名)
5.3在新行中添加:
127.0.0.1 site.test
这将告诉Windows在我们访问http://site.test时加载XAMPP。您可以尝试一下,它将显示XAMPP仪表板页面。
我们需要为此域启用SSL,并让XAMPP知道我们将SSL证书存储在何处。所以我们需要编辑C:\ xampp \ apache \ conf \ extra \ httpd-xampp.conf
并在底部添加以下代码:
## site.test
<VirtualHost *:80>
DocumentRoot "C:/xampp/htdocs"
ServerName site.test
ServerAlias *.site.test
</VirtualHost>
<VirtualHost *:443>
DocumentRoot "C:/xampp/htdocs"
ServerName site.test
ServerAlias *.site.test
SSLEngine on
SSLCertificateFile "crt/site.test/server.crt"
SSLCertificateKeyFile "crt/site.test/server.key"
</VirtualHost>
之后,您将需要在XAMPP中重新启动Apache。非常简单,只需打开XAMPP控制面板,然后停止并重新启动Apache模块即可。
答案 2 :(得分:0)
使用此链接[1],您可能会获得免费的ssl。您需要选择您正在使用的软件(例如Apache),并在我使用Debian 9的情况下选择要使用的操作系统。如果不确定系统,则需要SSH服务器并执行如果使用的是Linux,则命令“ $ cat / etc / * release”。一旦选择了正确的软件和系统,它将为您提供有关如何获取SSL的说明。
您可以按照此处[2]的说明安装SSL。
希望此信息对您有所帮助。
[1] https://certbot.eff.org/lets-encrypt/debianstretch-apache
[2] https://www.sslshopper.com/apache-server-ssl-installation-instructions.html
答案 3 :(得分:0)
免费SSL的最常见解决方案是LetsEncrypt。
LetsEncrypt为大多数操作系统提供各种客户端。我建议使用客户端ACMESharp。
在Powershell上执行以下步骤(如official documentation of the project中所述)
1)安装ACMESharp
Import-Module ACMESharp
2)初始化保管库
Initialize-ACMEVault
3)使用电子邮件创建新的ACME注册
New-ACMERegistration -Contacts mailto:somebody@example.org -AcceptTos
4)提交域标识符
New-ACMEIdentifier -Dns myserver.example.com -Alias dns1
5)处理挑战以证明域所有权
选择一种方法来拥有自己的域名,我建议使用HTTP 挑战。
(Complete-ACMEChallenge dns1 -ChallengeType http-01 -Handler manual).Challenge
如果您未在输出中获得挑战详细信息,例如文件路径和内容,请尝试以下操作:
(Update-ACMEIdentifier dns1 -ChallengeType http-01).Challenges | Where-Object {$_.Type -eq "http-01"}
您可能必须允许通过apache访问隐藏的位置,因此挑战可以到达。众所周知的位置。 根据您的自定义需求,您可以使用类似以下配置的内容(如this post中所述):
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_FILENAME} !.well-known/
RewriteRule "(^|/)\.(?!well-known)" - [F]
</IfModule>
6)提交质询以证明域所有权(HTTP方法)
Submit-ACMEChallenge dns1 -ChallengeType http-01
挑战不会立即更新,因此请尝试更新结果,直到有效为止。
(Update-ACMEIdentifier dns1 -ChallengeType http-01).Challenges |Where-Object {$_.Type -eq "http-01"}
一旦有效,请尝试:
Update-ACMEIdentifier dns1
7)请求并获取证书
New-ACMECertificate dns1 -Generate -Alias cert1
Submit-ACMECertificate cert1
证书可能不会立即颁发,请尝试:
Update-ACMECertificate cert1
直到确定。
8)导出公钥和私钥
私钥:
Get-ACMECertificate cert1 -ExportKeyPEM "path\to\cert1.key.pem"
证书签名请求:
Get-ACMECertificate cert1 -ExportCsrPEM "path\to\cert1.csr.pem"
让加密公共证书:
Get-ACMECertificate cert1 -ExportCertificatePEM "path\to\cert1.crt.pem" -ExportCertificateDER "path\to\cert1.crt"
发行者的公开证书:
Get-ACMECertificate cert1 -ExportIssuerPEM "path\to\cert1-issuer.crt.pem" -ExportIssuerDER "path\to\cert1-issuer.crt"
无论如何,您几乎不需要上述所有内容,但是私钥绝对必要,因此请确保安全。
有关更多文档,请访问项目的github repo。