如何将SSL正确安装到我的服务器?

时间:2019-05-16 06:09:39

标签: apache ssl openssl xampp

我有一个子域,我想安装一个有效的SSL(可能是免费的SSL)。我曾经通过服务器的公共地址访问我的网站。现在,我正在使用子域来访问我的网站。我想向服务器添加有效的SSL以保护我的网站。我正在使用XAMPP。如何正确安装SSL,因为当我使用HTTPS访问我的网站时,我会得到 NET :: ERR_CERT_AUTHORITY_INVALID ,并且在哪里可以获取有效的SSL证书?

4 个答案:

答案 0 :(得分:0)

可以说,最受欢迎的免费SSL提供程序(以及我使用的一种)将是LetsEncrypt

安装步骤因操作系统而异,例如适用于Ubuntu的this

答案 1 :(得分:0)

您可以从letsencrypt获得最受欢迎的免费SSL证书。

这里是您可以使证书在本地主机(XAMPP)上工作的步骤:

  1. 在默认XAMPP位置C:\ xampp \ apache \ crt中创建新文件夹crt
  2. 在此处粘贴2个文件:cert.confmake-cert.bat
  3. 现在编辑cert.conf并运行make-cert.bat 使用我们要使用的域更改{{DOMAIN}}文本,在本例中为site.test并保存。

双击make-cert.bat并在出现提示时输入域site.test。只需输入其他问题,因为我们已经从cert.conf中设置了默认值。

  1. 之后,您将看到site.test文件夹已创建。在该文件夹中,我们将有server.crt和server.key。这是我们的SSL证书。

双击server.crt在Windows上安装它,以便Windows可以信任它。

然后选择“将所有证书放入以下存储区”,然后单击浏览并选择“受信任的根证书颁发机构”。

  1. 编辑主机文件

5.1以管理员身份打开记事本。

5.2编辑C:\ Windows \ System32 \ drivers \ etc \ hosts(文件没有扩展名)

5.3在新行中添加:

127.0.0.1 site.test

这将告诉Windows在我们访问http://site.test时加载XAMPP。您可以尝试一下,它将显示XAMPP仪表板页面。

  1. 在XAMPP conf中添加站点。

我们需要为此域启用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模块即可。

  1. 重新启动浏览器

答案 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