如何在核心/非托管 Ubuntu 服务器上安装 SSL

为什么我需要安装或重新安装我的 SSL 证书?

根据 全球标志;

证书颁发机构 (CA) 行业被警告与在 CA 证书中包含特定扩展(OCSP 签名扩展密钥使用)相关的合规性影响,在某些情况下,这会产生意外的合规性和安全性影响。 许多 GlobalSign 颁发 CA 已受到此问题的影响。 虽然没有发生关键泄露或安全事件,但我们将根据 CA/B 论坛基线要求和 GlobalSign CPS 撤销这些颁发 CA,作为我们补救计划的一部分。 吊销的中间证书可能会导致验证由这些中间证书签名的证书时出错。

Globalsign.com

那么,这究竟意味着什么?

这意味着发现验证您的 SSL 证书的基础证书之一存在缺陷。 尽管没有发现安全问题,但 Globalsign 已选择撤销该基础证书作为预防措施,以确保不会影响其客户。

你下一步怎么做?

基本上,Globalsign 要求您在服务器上搜索任何 受影响的证书 并使用他们在下面概述的步骤更换或重新发行它们。

重新颁发 SSL 证书

Globalsign 已要求受此问题影响的客户采取以下步骤。
1. 在 GlobalSign 搜索受影响的证书
2. 重新签发任何受影响的 SSL 证书
3. 安装新证书 (在此页面上选择服务器类型,例如, ApacheNginx, IIS)

如果我需要新的 SSL 证书怎么办?

在这种情况下,我们概述了安装新 SSL 证书所需采取的以下步骤。

获取新的 SSL 证书

为了创建新的 SSL 证书,我们必须遵循以下步骤。

1. 生成 CSR — 创建一个新的证书签名请求

2. 购买证书 — 将 CSR 发送到 GlobalSign,支付订单,然后他们审核信息并提供签名证书。

3. 安装证书 — 通常,这属于 Apache 配置。

下面,我们提供更详细的信息来完成这两个任务 核心托管 CentOS 和非托管 Ubuntu 服务器

要获得新的 SSL 证书,您必须首先生成 CSR 或证书签名请求。 接下来,您必须向 GlobalSign 提交您的 CSR 以获得新的 SSL。 订购证书并完成审核过程后,您现在就可以安装证书了。 您可以随时通过您的 GlobalSign 证书中心 (GCC) 帐户获取您的证书副本。 它也将通过电子邮件发送给您。

注意:在安装 SSL 证书之前,您需要确保安装了 Globalsign 提供的另外两个证书。 这些额外的证书,可以下载 这里,被称为中间证书并链接到 GlobalSign 的根证书。 需要这些中间证书来确保您的客户端的浏览器信任您正在安装的 SSL 证书。

生成 CSR 证书

首先,让我们检查是否 Apache 已启用 SSL 模块。

root@host3:~# a2enmod ssl 

接下来,我们需要重启 apache 来启动模块。

root@host3:~# systemctl restart apache2 

我们首先使用此命令生成 CSR 以发送到 GlobalSign 以获取您的 SSL。 (将 mydomain 替换为您的域名)

openssl req -new -newkey rsa:2048 -nodes -keyout /etc/ssl/private/mydomain.key -out /etc/ssl/private/mydomain.csr
root@host3:~# openssl req -new -newkey rsa:2048 -nodes -keyout /etc/ssl/private/mydomain.key -out /etc/ssl/private/mydomain.csr
Generating a RSA private key
......................+++++
.......................................................+++++
writing new private key to '/etc/ssl/private/mydomain.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:Michigan
Locality Name (eg, city) []:Detroit
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Liquid Web Inc.
Organizational Unit Name (eg, section) []:Marketing
Common Name (e.g. server FQDN or YOUR name) []:host3.g33k.fun
Email Address []:[email protected]

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:1234567890
An optional company name []:

系统将提示您回答一系列问题,如下所述。

  • 国家的名字 – 这是您所在国家/地区的两个字母缩写。 为了 example,美国将是美国,英国将是 GB。
  • 州或省名称 – 这是您的组织所在州的全称。 为了 example,这可能是“加利福尼亚”或“密歇根”。
  • 地区名称 – 您的组织运营所在城市的名称。 示例可能包括“兰辛”或“凤凰”。 请勿在此字段中使用缩写。 为了 example, “英石。 海伦娜”应该是“圣赫勒拿”。
  • 机构名称 – 您的组织的名称。 如果您是企业,则必须使用您的法定名称。 如果您以个人身份申请,请使用您的全名。
  • 组织单位名称 – 如果以企业身份申请,您可以在此处输入您的“经商身份”(DBA) 名称。 或者,您可以在此处使用部门名称。 为了 example、“IT 部门”或“Web 管理”。
  • 通用名称 – 您为其购买 SSL 证书的域名。 这必须是完全限定的域名 (FQDN)。 一个 example 可能是 mydomain.com。
  • 电子邮件地址 – 可用作您域的联系人的电子邮件地址。 确保地址有效!
  • 挑战密码 – 可选密码以进一步保护您的证书。 如果您选择使用该密码,请务必记住该密码。 它必须至少有 4 个字符长。 如果你愿意,你可以跳过这一步。
  • 可选的公司名称 – 另一个可选步骤。 如果您愿意,请填写您的公司名称。 这对于 Web SSL 证书不是必需的。

关键和 CSR 文件

在 /etc/ssl/private/ 目录中,您应该会看到两个新文件。

  • 我的域名.csr
  • mydomain.key
root@host3:/etc/ssl/private# ll
total 20
drwx--x--- 2 root ssl-cert 4096 Dec 18 15:40 ./
drwxr-xr-x 4 root root     4096 Apr 24  2020 ../
-rw-r--r-- 1 root root     1119 Dec 18 15:40 mydomain.csr
-rw------- 1 root root     1704 Dec 18 15:39 mydomain.key
root@host3:/etc/ssl/private# 

.key 文件应在您的服务器上保密。 .csr 文件是您的新证书签名请求。 此文件包含将发送到证书颁发机构的信息。 您可以使用“cat”命令检查 CSR 的内容。

root@host3:/etc/ssl/private# cat mydomain.csr

-----BEGIN CERTIFICATE REQUEST-----
MIIDADCCAegCAQAwgZ8xCzAJBgNVBAYTAlVTMREwDwYDVQQIDAhNaWNoaWdhbjEQ
MA4GA1UEBwwHRGV0cm9pdDEYMBYGA1UECgwPTGlxdWlkIFdlYiBJbmMuMRIwEAYD
VQQLDAlNYXJrZXRpbmcxFzAVBgNVBAMMDmhvc3QzLmczM2suZnVuMSQwIgYJKoZI
hvcNAQkBFhVkc2luZ2VyQGxpcXVpZHdlYi5jb20wggEiMA0GCSqGSIb3DQEBAQUA
A4IBDwAwggEKAoIBAQD8wcsNFU1N/PZUzC/nVXnyH4ar8QWtrDRGHPbV+jCHJPDP
Vs345fWS/3xowK7Uz2hiVtf7d78RVUN2Gzx7M77FNsyGZ4ce9duHgpmFS0D3swXb
lwQHZo3KFhMZ/Vy3WlG37dnmi5ASVRNMmMqC1owP9xtzsfN4k/6aWUQu30qSkXHv
qDZWUNgCDb0qKjZYlzr7DDc/1h/RPguuh3scdw2XFEDVKYmk0AMhsg6CF2bqzOVP
B2nDLhjUNHalYtIwG+OFI/YosJfKuZ6G2DgIHk9SQQeOdRHpocPhrv8WsccXaf2E
9Z2tu46MtegCKifaQwW5UXf6zZGXcLm/xXtYa7xNAgMBAAGgGzAZBgkqhkiG9w0B
CQcxDAwKMTIzNDU2Nzg5MDANBgkqhkiG9w0BAQsFAAOCAQEAZYOefl+8b9OkHyTf
QEUVSAgEUsIIPDJpYobhmByjQsDOFDgDCTs7FK/x1c+BKdvvSRSJiwzLMwvbHD9R
rOsLjbbv5lbqtb+jjsxHT7iu1pnnpDV+wsL0pi8Xy869onTPdPqhA4boPdo7vgso
ItOKL11wefdqqa85NEsv5HQXbpII+TcG8u/wcmJ3vFoh4Z89dhAdhrkqrDSSJkRN
SuK4NW6bVdffpAMRRJvvTCMfFYgm9X7mL2z0pOWLYnMD3IH4DksYvvUmYPF8Ni97
3iyownvCEXLLEKK5d/7Clch+XfpjmSl1CnOjVXAJ8zzgSKpgWek+pF+1d811c70s
5GNq0g==
-----END CERTIFICATE REQUEST-----
root@host3:/etc/ssl/private#  

订购新 SSL 证书时,您需要将 CSR 文件的全部内容复制并粘贴到您的证书颁发机构。 确保包括读取的行

—–开始证书请求—–

————结束证书请求——

订购新的 SSL 证书

您现在可以从管理仪表板中订购新的 SSL。 选择添加,然后选择 SSL 证书。

接下来,选择手动选项并粘贴上面生成的 csr。

管理2ssl

最后,单击购买 SSL 证书按钮。

管理3ssl

安装证书

要在证书到达时安装证书,请将证书复制到这些文件的典型位置 – 服务器上的 /etc/httpd/ssl 文件夹。 这包括您的服务器证书、私钥和中间证书。 您的服务器证书可以从交付电子邮件中获得。

接下来,打开你的 Apache 用于编辑的配置文件。 这通常可以在 Ubuntu 的以下位置找到。

root@host3:~# vim /etc/httpd/httpd.conf

现在,配置您的虚拟主机以使用证书。 在 httpd.conf 文件中找到您站点的虚拟主机。 它应该看起来像 example 以下。

 <VirtualHost xxx.xxx.x.x:443>
     DocumentRoot /var/www/examplesite
     ServerName example.com www.example.com
     SSLEngine on
     SSLCertificateFile /path/to/examplesite.crt
     SSLCertificateKeyFile /path/to/privatekey.key
     SSLCertificateChainFile /path/to/intermediate.crt
 </VirtualHost> 

将以下指令指向位于 /etc/ 文件夹中的相应证书。

在 Ubuntu 中,您可以添加新的 Apache 配置文件到 /etc/apache2/sites-available/ 文件夹中,它们将在何时加载 Apache 下次重新加载或重新启动。

SSL证书文件 — 这应该指向您的服务器证书。
SSL证书密钥文件 — 这应该指向您服务器的私钥。
SSL证书链文件 — 这应该指向您产品的中间证书。

接下来,我们将测试我们更新的配置。 根据您的系统,运行以下命令:

root@host3:~# apachectl configtest 

或者

root@host3:~# apache2ctl configtest

这将检测您的配置中的任何错误,例如不匹配的公钥和私钥,或不正确的路径。

最后,重启 Apache.

root@host3:~#systemctl restart apache2

创建新的自签名 SSL 证书

要在 Ubuntu 上创建自签名 SSL 证书,请遵循以下命令。
首先让我们检查是否 Apache 已启用 SSL 模块。

[root@host3 ~]# apachectl -M | grep ssl
[root@host3 ~]# 

如果它没有安装这个模块,我们可以使用这个命令安装它。

[root@host3 ~]# a2enmod ssl

接下来,我们重新启动 apache,以便服务器识别更改。

root@host3:~#systemctl restart apache2

为了验证模块是否就位,我们将重新运行该命令。

root@host3:~# apachectl -M | grep ssl
  ssl_module (shared)

现在,我们将创建一个新文件夹来存储我们的私钥。

[root@host2 ~]# mkdir /etc/httpd/ssl

由于存储在此目录中的文件必须保密,因此我们修改文件夹权限以确保 root 用户是唯一有权访问的用户。

[root@host2 ~]# chmod 700 /etc/ssl/private

创建企业社会责任

接下来,我们将使用 openssl 命令创建 SSL 密钥和证书文件。 创建新的 CSR 时,系统会提示您就有关您正在创建的域的信息提出一系列问题。 运行以下命令开始。

[root@host2 ~]# openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache.key -out /etc/ssl/private/apache.crt

 Generating a RSA private key
 ……………………………………………………………………….+++++
 ……………………………………………………………..+++++
 writing new private key to '/etc/ssl/private/apache.key'
 You are about to be asked to enter information that will be incorporated
 into your certificate request.
 What you are about to enter is what is called a Distinguished Name or a DN.
 There are quite a few fields but you can leave some blank
 For some fields there will be a default value,
 If you enter '.', the field will be left blank.
 Country Name (2 letter code) [AU]:US
 State or Province Name (full name) [Some-State]:Michigan
 Locality Name (eg, city) []:Lansing
 Organization Name (eg, company) [Internet Widgits Pty Ltd]:Liquid Web Inc.
 Organizational Unit Name (eg, section) []:Marketing
 Common Name (e.g. server FQDN or YOUR name) []:host3.g33k.fun
 Email Address []:[email protected]
 root@host3:/etc/security# 

创建网站

现在,让我们快速为一个测试网站创建一个新文件夹 /var/www/ 通过运行以下命令。

[root@host3 ~]# mkdir /var/www/g33k

现在我们有了站点目录,我们将添加一个基本的 HTML 文件。 接下来,我们将 cd 进入我们新创建的文件夹并创建一个文件。

[root@host3 ~]# cd /var/www/g33k/
[root@host3 ~]# vim index.html

将以下代码粘贴到 index.html 文件

<html>
  <head>
    <title>g33k.fun</title> 
  </head>
  <body>
     <p>G33k.fun is now secure!</p>
  </body>
</html>

使用它,我们现在可以配置我们的虚拟主机条目。

将自签名 SSL 证书添加到 Apache

因为 Apache 带有一个名为 000-default.conf 的默认 VirtualHost 文件,我们将使用它作为我们的配置模板文件。 接下来,我们将模板文件复制到一个名为 g33k.conf 的新文件中。 然后我们将编辑该文件。

[root@host3 ~]# cp 000-default.conf g33k.conf
[root@host3 ~]# vim /etc/apache2/sites-available/g33k.conf

在这个文件中,我们应该修改以下条目。

ServerAdmin [email protected]
DocumentRoot /var/www/g33k/ServerName host3.g33k.fun

这可确保访问者在输入 g33k.fun 时将访问正确的网站而不是默认页面。

配置虚拟主机

接下来,我们将通过在配置文件目录中运行以下命令来激活虚拟主机配置文件。

[root@host3 ~]# a2ensite g33k.conf
Enabling site g33k.fun
 To activate the new configuration, you need to run:
   systemctl reload apache2
 root@host3:/etc/apache2/sites-available# systemctl reload apache2.service
 root@host3:/etc/apache2/sites-available# 
 <VirtualHost _default_:443>
 ServerName host2.g33k.fun:443 

-或者-

 <VirtualHost _default_:443>
 ServerName 64.92.237.88:443 

注意:域应与上述步骤中指定的“通用名称”相同。

现在,验证是否在同一文件中正确设置了以下变量:

SSLEngine on SSLCertificateFile /etc/ssl/private/apache.crt 
SSLCertificateKeyFile /etc/ssl/private/apache.key

最后,确保添加 SSL 文件所在的文件位置。 然后退出并使用 :wq 命令保存文件。

接下来,重启 Apache.

SSL 正在工作

测试

您的网络浏览器很可能会在浏览器地址栏中显示警告三角形,说明网站的安全证书不受信任。 这是正常的,因为我们的证书未由 Thawte 或 GlobalSign 等已知 CA(证书颁发机构)签名。 此警告仅表示它无法验证您尝试连接的服务器的身份。 我们创建了自签名证书而不是受信任的 CA 签名证书,因此这非常有意义。

如您所见,我们在证书中添加的信息是清晰可见的。 一旦您为浏览器的身份验证添加了例外,您将被允许继续访问您的新安全站点。

结论

在核心托管或非托管服务器上替换 SSL 通常很耗时,并且给已经很复杂的系统增加了一层复杂性。 在处理当今具有安全意识的客户端时,SSL 是必不可少的。 证明您认真对待安全性只会有助于提供更高级别的信任。

如果您对此信息有任何疑问,我们将随时为您解答与本文相关问题的任何询问,每天 24 小时、每周 7 天、每年 365 天。

我们的支持团队由经验丰富的 Linux 技术人员和才华横溢的系统管理员组成,他们对多种网络托管技术有着深入的了解,尤其是本文中讨论的技术。

如果您是完全托管的 VPS 服务器, Cloud 专用,VMWare 私有 Cloud私有父服务器, 托管 Cloud 服务器或专用服务器所有者并且您对执行概述的任何步骤感到不舒服,我们可以通过电话@800.580.4985 联系我们,这是帮助您完成此过程的聊天或支持票。