如何在 Debian 8 上为 Apache 创建 SSL 证书

简介: 如何在 Debian 8 上为 Apache 创建 SSL 证书

简介

本教程将指导您设置和配置使用 SSL 证书保护的 Apache 服务器。在教程结束时,您将拥有一个可以通过 HTTPS 访问的服务器。

SSL 基于将大整数解析为其同样大的质因数的数学难题。利用这一点,我们可以使用私钥-公钥对加密信息。证书颁发机构可以颁发验证此类安全连接真实性的 SSL 证书,同时,也可以在没有第三方支持的情况下生成自签名证书。

在本教程中,我们将生成一个自签名证书,进行必要的配置,并测试结果。自签名证书非常适合测试,但会导致用户在浏览器中出现错误,因此不建议用于生产环境。

如果您想要获取付费证书,请参阅本教程。

先决条件

要完成本教程,您需要:

  • 一个全新的 Debian 8 Droplet
  • 一个 sudo 非根用户,您可以按照本教程的步骤 2 和 3 进行设置
  • 已安装并更新的 OpenSSL(默认情况下应该已安装)
sudo apt-get update
sudo apt-get upgrade openssl

您可能需要另一台已安装 OpenSSL 的计算机进行测试:

  • 另一个 Linux Droplet
  • 或者,一个基于 Unix 的本地系统(Mac、Ubuntu、Debian 等)

步骤 1 — 安装 Apache

在这一步中,我们将使用名为 apt-get 的内置软件包安装程序。它极大地简化了软件包管理,并促进了干净的安装。

在先决条件中指定的链接中,您应该已经更新了 apt-get 并安装了 sudo 软件包,因为与其他 Linux 发行版不同,Debian 8 不会预装 sudo

Apache 将成为我们的 HTTPS 服务器。要安装它,请运行以下命令:

sudo apt-get install apache2

步骤 2 — 启用 SSL 模块

在本节中,我们将在服务器上启用 SSL。

首先,启用 Apache SSL 模块。

sudo a2enmod ssl

默认的 Apache 网站附带了一个有用的模板,用于启用 SSL,因此我们现在将激活默认网站。

sudo a2ensite default-ssl

重新启动 Apache 以使这些更改生效。

sudo service apache2 reload

步骤 3 — 创建自签名 SSL 证书

首先,让我们创建一个新目录,用于存储私钥和证书。

sudo mkdir /etc/apache2/ssl

接下来,我们将请求一个新证书并对其进行签名。

首先,生成一个新证书和一个用于保护它的私钥。

  • days 标志指定证书应保持有效的时间。使用此示例,证书将持续一年
  • keyout 标志指定我们生成的密钥的路径
  • out 标志指定我们生成的证书的路径
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt

调用此命令将导致一系列提示。

  • 通用名称:指定您服务器的 IP 地址或主机名。此字段很重要,因为您的证书需要与您网站的域名(或 IP 地址)匹配
  • 根据自己的意愿填写其他所有字段。

下面以红色显示示例答案。

[secondary_label Interactive]
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]:New York
Locality Name (eg, city) []:NYC
Organization Name (eg, company) [Internet Widgits Pty Ltd]:DigitalOcean
Organizational Unit Name (eg, section) []:SSL Certificate Test
Common Name (e.g. server FQDN or YOUR name) []:example.com               
Email Address []:test@example.com

设置文件权限以保护您的私钥和证书。

sudo chmod 600 /etc/apache2/ssl/*

有关三位数权限代码的更多信息,请参阅有关 Linux 权限的教程。

您的证书和用于保护它的私钥现在已准备好供 Apache 使用。

步骤 4 — 配置 Apache 使用 SSL

在本节中,我们将配置默认的 Apache 虚拟主机以使用 SSL 密钥和证书。进行此更改后,我们的服务器将开始为默认站点提供 HTTPS 而不是 HTTP 请求。

使用 nano 或您喜欢的文本编辑器打开服务器配置文件。

sudo nano /etc/apache2/sites-enabled/default-ssl.conf

找到以 <VirtualHost _default_:443> 开头的部分,并进行以下更改。

  • ServerAdmin 电子邮件行的下面添加一行,直接输入您的服务器名称。这可以是您的域名或 IP 地址:
ServerAdmin webmaster@localhost
ServerName example.com:443
  • 找到以下两行,并更新路径以匹配我们之前生成的证书和密钥的位置。如果您购买了证书或在其他地方生成了证书,请确保这里的路径与您的证书和密钥的实际位置匹配:
SSLCertificateFile /etc/apache2/ssl/apache.crt
 SSLCertificateKeyFile /etc/apache2/ssl/apache.key

完成这些更改后,检查您的虚拟主机配置文件是否与以下内容匹配。

<IfModule mod_ssl.c>
  <VirtualHost _default_:443>
    ServerAdmin webmaster@localhost
    ServerName example.com:443
    DocumentRoot /var/www/html
    
    . . .
    SSLEngine on
    
    . . .
    
    SSLCertificateFile /etc/apache2/ssl/apache.crt
    SSLCertificateKeyFile /etc/apache2/ssl/apache.key

保存并退出文件。

重新启动 Apache 以应用更改。

sudo service apache2 reload

要了解有关一般配置 Apache 虚拟主机的更多信息,请参阅本文。

第五步 — 使用 SSL 测试 Apache

在本节中,我们将从命令行测试 SSL 连接。

你可以从以下位置之一运行此测试:(1) 本地的基于 Unix 的系统,(2) 另一个 Droplet,或者 (3) 相同的 Droplet。如果你从外部系统运行它,你将确认你的站点可以通过公共互联网访问。

通过 HTTPS 443 端口打开连接。

openssl s_client -connect your_server_ip:443

滚动到输出的中间部分(在密钥之后),你应该会找到以下内容:

—-
SSL handshake has read 3999 bytes and written 444 bytes
—-

. . .

SSL-Session:

. . .

当然,数字是可变的,但这表示成功。恭喜你!

CTRL+C 退出。

你也可以在网页浏览器中访问你的站点,使用 URL 中的 HTTPS (https://example.com)。你的浏览器会警告你证书是自签名的。你应该能够查看证书并确认详细信息与你在第三步中输入的内容匹配。

结论

这结束了我们的教程,让你拥有一个使用 SSL 证书安全配置的工作中的 Apache 服务器。有关使用 OpenSSL 的更多信息,请参阅 OpenSSL Essentials 文章。


目录
相关文章
|
10月前
|
网络安全 Apache
Apache服务器安装SSL证书
Apache服务器安装SSL证书
216 0
|
安全 应用服务中间件 Linux
Linux上面配置Apache2支持Https(ssl)具体方案实现
虽然Nginx比较流行,但是由于一些老项目用到了Apache2来支持Web服务,最近想给服务上一个Https支持,虽然看似教程简单,但是也遇到一些特殊情况,经历了一番折腾也算是解决了所有问题,将过程记录如下。演示是基于Ubantu系统。
723 0
|
7月前
|
安全 Linux 网络安全
如何在 CentOS 7 上为 Apache 创建 SSL 证书
如何在 CentOS 7 上为 Apache 创建 SSL 证书
107 0
|
7月前
|
Ubuntu 安全 网络安全
如何在 Ubuntu 14.04 上为 Apache 创建 SSL 证书
如何在 Ubuntu 14.04 上为 Apache 创建 SSL 证书
58 0
|
安全 网络安全 Apache
百度搜索:蓝易云【Apache服务器上安装SSL证书?】
通过按照上述步骤正确安装SSL证书并配置Apache服务器,您的网站将获得HTTPS连接,提供更安全的访问体验。这有助于提高您的网站在百度搜索结果中的排名,并确保用户数据的保护。请记住,在SEO优化方面,确保网站内容的优质和关键词的优化也是至关重要的。
272 0
|
网络安全 Apache Windows
WAMPSERVER 3.0.17集成环境配置SSL进行HTTPS访问apache无法启动遇见的坑
WAMPSERVER 3.0.17集成环境配置SSL进行HTTPS访问apache无法启动遇见的坑
213 0
|
Linux 网络安全 Apache
CentOS7 Apache安装配置SSL证书/https(腾讯云为例)
CentOS7 Apache安装配置SSL证书/https(腾讯云为例)
993 0
CentOS7 Apache安装配置SSL证书/https(腾讯云为例)
|
Ubuntu 网络安全 Apache
|
网络安全 Apache 数据安全/隐私保护
phpstudy集成下Apache配置SSL证书实现https加密访问
phpstudy集成下Apache配置SSL证书实现https加密访问
|
网络安全 Apache 开发者
SSL 数字证书-Apache 证书配置部署|学习笔记
快速学习 SSL 数字证书-Apache 证书配置部署
190 0

热门文章

最新文章

推荐镜像

更多