AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 403186
Accepted
ThomasReggi
ThomasReggi
Asked: 2012-06-29 12:09:02 +0800 CST2012-06-29 12:09:02 +0800 CST 2012-06-29 12:09:02 +0800 CST

在 linux ubuntu 上的 apache 上设置 SSL

  • 772

我正在尝试让 SSL 在我的 apache 网络服务器上运行。

我还没有域设置的 DNS,这是个问题吗?

如何在我的网络服务器上设置 SSL?

当我启动 apache 时,它​​失败了。

root@vannevar:/etc/apache2/ssl# service apache2 start
 * Starting web server apache2                                                                                                                         Action 'start' failed.
The Apache error log may have more information.

无法读取证书的日志统计信息。

[Thu Jun 28 15:01:02 2012] [error] Init: Unable to read server certificate from file /etc/apache2/ssl/www.example.com.csr
[Thu Jun 28 15:01:02 2012] [error] SSL Library Error: 218529960 error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
[Thu Jun 28 15:01:02 2012] [error] SSL Library Error: 218595386 error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error

的内容/etc/apache2/httpd.conf

ServerName [SERVERIP]

的内容/etc/apache2/ports.conf

# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default
# This is also true if you have upgraded from before 2.2.9-3 (i.e. from
# Debian etch). See /usr/share/doc/apache2.2-common/NEWS.Debian.gz and
# README.Debian.gz

NameVirtualHost [SERVERIP]:443
NameVirtualHost *:80
Listen 80

<IfModule mod_ssl.c>
    # If you add NameVirtualHost *:443 here, you will also have to change
    # the VirtualHost statement in /etc/apache2/sites-available/default-ssl
    # to <VirtualHost *:443>
    # Server Name Indication for SSL named virtual hosts is currently not
    # supported by MSIE on Windows XP.
    Listen 443
</IfModule>

<IfModule mod_gnutls.c>
    Listen 443
</IfModule>

的内容/etc/apache2/sites-available/www.example.com

<VirtualHost *:80>
     ServerAdmin [email protected]
     ServerName example.com
     ServerAlias www.example.com
     DocumentRoot /srv/sites/example.com/public/
     ErrorLog /srv/sites/example.com/logs/error.log
     CustomLog /srv/sites/example.com/logs/access.log combined
</VirtualHost>

<VirtualHost [SERVERIP]:443>
     SSLEngine On
     SSLCertificateFile /etc/apache2/ssl/www.example.com.csr
     SSLCertificateKeyFile /etc/apache2/ssl/www.example.com.key
     SSLCACertificateFile /etc/apache2/ssl/comodo.crt

     ServerAdmin [email protected]
     ServerName example.com
     ServerAlias www.example.com
     DocumentRoot /srv/sites/example.com/public/
     ErrorLog /srv/sites/example.com/logs/error.log
     CustomLog /srv/sites/example.com/logs/access.log combined
</VirtualHost>

更新:

在 dreamhost(我正试图离开)中,我已经有一个带有 ssl / https 的域,我可以在 dreamhost 管理员证书、私钥和中间证书中看到三个密钥。我可以用这些做什么吗?我可以看到 dreamhost 正在使用 comodo 并且我的网站说它的 PositiveSSL 所以...在 comodo 的网站上有根证书和中间证书。这五个证书和openssl req -new -days 365 -nodes -keyout www.mydomain.com.key -out www.mydomain.com.csr命令创建的两个有什么关系呢?这两个要求实际证书?

我意识到 apache 的错误是指/etc/apache2/sites-available/www.example/com我弄乱了文件类型的文件,因为SSLCertificateFile /etc/apache2/ssl/www.example.com.csr它应该是.crt根据linode 文档

更新 2

所以我进入 dreamhost 并将密钥复制到以下文件并映射以下内容

certificate => dh.crt
private key => dh.key
intermediate certificate => dh.cer

更改了连接/sites-available/example.com并且它工作了(apache 工作)。这是否意味着当我连接我的域时 ssl 将起作用?

linux ubuntu apache-2.2 ssl ssl-certificate
  • 5 5 个回答
  • 5710 Views

5 个回答

  • Voted
  1. Best Answer
    Robbie Scourou
    2012-06-29T14:08:51+08:002012-06-29T14:08:51+08:00

    我不能在这里投票或发表评论,但 Adrian Perez 是对的,您使用的不是证书,而是证书签名请求,在这一行:

    SSLCertificateFile /etc/apache2/ssl/www.example.com.csr
    

    CSR 需要发送到证书颁发机构以验证您的身份并生成证书。您可以使用以下命令自行生成:

    openssl x509 -req -days 365 -in www.example.com.csr -signkey www.example.com.key -out www.example.com.crt
    

    并改变:

    SSLCertificateFile /etc/apache2/ssl/www.example.com.csr
    

    至:

    SSLCertificateFile /etc/apache2/ssl/www.example.com.crt
    

    但是当您在浏览器中访问该站点时,您会收到警告,因为这是一个自签名证书,因此不受信任。尽管如此,这仍然是让您了解流程并测试网站是否正常运行的好方法。基本步骤是:

    1. 生成一个私钥文件(只做一次,第一次建立一个站点)
    2. 生成证书签名请求
    3. 向证书颁发机构支付大量资金以验证和颁发证书(Thwate 或类似证书)
    4. 将密钥放在服务器上。

    关于权限,确保 key/crt 只能由 root (chmod 600) 读取/写入,否则 Apache 会抱怨。

    希望这可以帮助

    • 3
  2. MitziMeow
    2012-06-29T12:33:59+08:002012-06-29T12:33:59+08:00

    似乎您的证书文件不可读(或丢失)

    [Thu Jun 28 15:01:02 2012] [error] Init: Unable to read server certificate from file /etc/apache2/ssl/www.example.com.csr

    您是否检查过权限/路径?

    此外,必须设置 dns,否则证书会显示一些错误(取决于浏览器)

    • 0
  3. djangofan
    2012-06-29T13:15:33+08:002012-06-29T13:15:33+08:00

    您可以下载一个名为Keystore Explorer的 Java 程序来打开并查看证书以验证其是否有效。Apache 的问题是证书需要采用特定格式。 This website might help explain the format you need,这似乎是 PEM 。

    • 0
  4. Adrian Perez
    2012-06-29T13:33:32+08:002012-06-29T13:33:32+08:00

    也许我错了,但请检查文件 www.example.com.csr 是否包含证书。通常带有 csr 扩展名的文件包含要在 CA 中签名的请求。

    另外,您可以像另一个用户所说的那样检查权限和路径,但我认为问题出在文件中的内容上。

    可以勾选删除文件并新建一个空白文件,将证书数据粘贴到文件中。

    问候!

    • 0
  5. David Schwartz
    2012-06-29T14:16:41+08:002012-06-29T14:16:41+08:00

    在拥有实际证书之前,您无法设置 SSL。您所拥有的是对证书的请求,该请求应发送给证书颁发机构以让他们颁发证书。此外,虽然您可以让服务器在没有 DNS 工作的情况下工作,但客户端将无法访问服务器,除非通过 IP,这将生成警告,因为证书无法验证 IP。

    更新:听起来你现在已经完成了所有事情。如果还有任何其他问题,您可以在设置 DNS 后解决它们。

    • 0

相关问题

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve