【问题标题】:How to properly install SSL to my server?如何正确安装 SSL 到我的服务器?
【发布时间】:2019-10-03 08:01:35
【问题描述】:

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

【问题讨论】:

  • 您使用的是哪个操作系统?不同系统的步骤会有所不同。
  • 请与我们分享您正在使用的操作系统。您还提到您想将 SSL 添加到您的子域。让我们知道您的主域是否有 SSL,如果有,请与我们分享 apache 配置。
  • @workaround 我使用的是 windows server 2012 配置在这里stackoverflow.com/questions/56141397/…
  • Okthanx 了解更多信息,请尝试以下解决方案。

标签: apache ssl openssl xampp


【解决方案1】:

免费 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 访问隐藏位置,以便挑战可以到达 .well-known 位置。 您可以使用类似以下配置的内容,具体取决于您的自定义需求(如 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

【讨论】:

    【解决方案2】:

    您可以使用此链接 [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】:

      可以说最受欢迎的免费 SSL 提供程序(也是我使用的那个)将是 LetsEncrypt

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

      【讨论】:

      【解决方案4】:

      您可以从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(文件没有ext)

      5.3 在新行中添加:

      127.0.0.1 site.test
      

      当我们访问http://site.test时,这会告诉windows加载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. 重启浏览器

      【讨论】:

      • 是的,应该的。
      • 你能用我的子域编辑步骤吗?这是我的子域:stb.pcsoit.ph
      猜你喜欢
      • 1970-01-01
      • 2019-04-01
      • 2021-06-22
      • 2017-12-07
      • 1970-01-01
      • 2015-08-02
      • 2021-01-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多