apache 怎么添加ssl证书

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了apache 怎么添加ssl证书相关的知识,希望对你有一定的参考价值。

Apache配置安装SSL证书的教程如下:

为保障服务器证书在客户端的兼容性,服务器证书需要安装两张中级CA证书(不同品牌证书,可能只有一张中级证书)。

1、从邮件中获取中级CA证书:

将证书签发邮件中的从BEGIN到 END结束的两张中级CA证书内容(包括“—–BEGIN CERTIFICATE—–”和“—–END CERTIFICATE—–”)粘贴到同一个记事本等文本编辑器中,中间用回车换行分隔。修改文件扩展名,保存为conf/ssl.crt/intermediatebundle.crt文件(如果只有一张中级证书,则只需要保存并安装一张中级证书)。

2、完成apache配置 2.0的配置

httpd.conf 中增加

Listen443

NameVirtualHost *:443

DocumentRoot “/data/web/www”

ServerName aaa.com:443

ErrorLog “logs/error.log”

CustomLog “logs/access.log” combined

SSLEngine on

SSLCertificateFile /usr/local/apache/conf/ssl.crt/server.crt

SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/server.key

SSLCertificateChainFile /usr/local/apache/conf/ssl.crt/intermediatebundle.crt
参考技术A apache上安装SSL证书,可以参考apache ssl证书安装部署指南,不管你申请的什么SSL证书,只要是apache服务器,安装方法都是一样的。本回答被提问者采纳 参考技术B 您好!
网站添加SSL证书步骤如下:

一、访问:Gworg,目前在淘宝也可以找到。

二、提供需要的SSL证书域名(网址)。

三、获取SSL证书文件。

四、拿到证书根据文档安装到服务器。

将 SSL 添加到 Apache 服务器

【中文标题】将 SSL 添加到 Apache 服务器【英文标题】:Adding SSL to Apache Server 【发布时间】:2017-11-10 12:29:31 【问题描述】:

我们今天获得了 SSL 证书,我正在尝试将 SSL 证书添加到域中,以便我们可以通过 https 访问该网站,但是我遇到了问题。

我们有一个在 Windows 上运行的 apache 服务器。

该配置适用于端口 80,但是当我将端口 443 添加到配置中时,一切都停止工作了。

我在启动 apache 时遇到的错误是

The requested operation has failed.

我添加了以下行

Listen 443

线下:

Listen 80

我添加了以下 VirtualHost 配置

<VirtualHost _default_:443>

    DocumentRoot "c:/path/to/website"

    ServerName example.com
    ServerAlias example.com www.example.com

    SSLEngine on

    SSLCertificateFile "c:/path/to/cert/cert.crt"

    SSLCertificateKeyFile "c:/path/to/cert/key.key"

    SSLCACertificateFile "c:/path/to/cert/bundle.ca-bundle"

</VirtualHost>

但是,每当我在添加此内容后启动 apache 服务器时,它都不会启动并且出现错误。

我已经注释掉了一些代码,并将问题缩小到Listen 443 行。添加这个时有什么我没有考虑到的吗?

这些是 error.log 中的最后 3 行

[Thu Jun 08 18:15:31.909142 2017] [mpm_winnt:notice] [pid 66428:tid 712] AH00422: Parent: Received shutdown signal -- Shutting down the server.
[Thu Jun 08 18:15:47.209776 2017] [mpm_winnt:notice] [pid 67332:tid 620] AH00364: Child: All worker threads have exited.
[Thu Jun 08 18:15:48.067933 2017] [mpm_winnt:notice] [pid 66428:tid 712] AH00430: Parent: Child process exited successfully.

编辑

这是运行httpd.exe -e debug的响应

(OS 10013)An attempt was made to access a socket in a way forbidden by its access permissions.  : AH00072: make_sock: could not bind to address [::]:443
(OS 10013)An attempt was made to access a socket in a way forbidden by its access permissions.  : AH00072: make_sock: could not bind to address 0.0.0.0:443
AH00451: no listening sockets available, shutting down
AH00015: Unable to open logs

【问题讨论】:

你在启动 apache 时遇到什么错误? 我相信是“操作无法完成”...我会检查一下我刚收拾东西回家所以会检查我什么时候回家(没想到会快回复!!) 没问题,请用错误信息更新问题 我刚刚更新了问题 你能检查一下apache错误日志吗? 【参考方案1】:

我不知道你的 httpd.conf 文件长什么样,也许你不小心删除/更改了一些值。

您需要做的第一件事是恢复您的 httpd.conf 文件并在没有 SSL 配置的情况下启动服务。成功后,您可以继续执行以下步骤:

在一个新文件中分离所有 SSL 设置,也许一个名为 httpd-ssl.conf 的新文件是个好名字。

之后,在主 httpd.conf 的末尾添加以下行以包含新文件:

# Secure (SSL/TLS) connections
Include conf/httpd-ssl.conf

这是避免在主配置中意外更改/删除某些内容并限制可能错误来源的良好做法,您会知道任何错误都与包含的新文件有关。

您的新 conf/httpd-ssl.conf 应如下所示(标准设置):

# HTTPS port
Listen 443

<VirtualHost _default_:443>

#   General setup for the virtual host
DocumentRoot "C:/your_httpd_path/htdocs"
ServerName www.example.com:443
ServerAdmin admin@example.com
ErrorLog "C:/your_httpd_path/logs/error.log"
TransferLog "C:/your_httpd_path/logs/access.log"

#   SSL Engine Switch:
SSLEngine on

#   Server Certificates:

SSLCertificateFile "c:/path/to/cert/cert.crt"
SSLCertificateKeyFile "c:/path/to/cert/key.key"
SSLCACertificateFile "c:/path/to/cert/bundle.ca-bundle"

<FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
</FilesMatch>

<Directory "C:/your_httpd_path/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>

CustomLog "C:/your_httpd_path/logs/ssl_request.log" \
          "%t %h %SSL_PROTOCOLx %SSL_CIPHERx \"%r\" %b"

</VirtualHost>  

您是否尝试过使用 httpd.exe -e 调试?也许我们可以在这种模式下找到一些有用的东西。

更新:啊哈!你有一个错误!它可能是 443 某处的重复行。

你能在notepad++中检查你的文件并搜索所有匹配“443”的巧合吗?可能您已经配置了 443 并且您尝试再次添加它?你只需要一行:

Listen 443

或者可能已经在该端口中运行?检查:

netstat -na | findstr "443"

如果你有类似的东西:

TCP    [::]:443               [::]:0                 LISTENING

然后在您的 443 端口上运行其他东西。无论如何,您可以更改您的 httpd conf 并设置任何其他端口,例如 4443 即或终止现在占用 443 的进程。

【讨论】:

我就是这么做的。它已经在没有 ssl 的情况下工作......添加 Listen 443 行使其失败 试试我的建议,创建一个新文件并将其包含在主 httpd.conf 中,不要忘记更改 apache 安装、日志和证书的路径,然后重试。 提供的代码不起作用。如何使用 httpd.exe? Zach 你已经执行了 httpd.exe 并附加了输出。您是否按照我的说明测试了端口? 我现在已经解决了这个问题,我正在运行正在侦听端口 443 的 http 服务。

以上是关于apache 怎么添加ssl证书的主要内容,如果未能解决你的问题,请参考以下文章

Let's Encrypt ssl证书怎么下载?

如何在apache上安装SSL证书

Linux 安装SSL证书

CentOS下给apache服务添加SSL证书

阿里云购买的域名,买的ssl证书,怎么让证书有效?怎么配置证书到域名上面去

如何安装SSL证书 4种方法来安装SSL证书