在linux ubuntu上设置Apache

我试图让SSL在我的Apache Web服务器上运行。

我没有DNS的域设置,但这是一个问题?

如何在我的Web服务器上设置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 (ie 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 / SSL域我可以看到dreamhostpipe理员证书,私钥和中间证书中的三个键。 我可以用这些做什么吗? 我可以看到,dreamhost正在使用comodo和我的网站说它的PositiveSSL所以…在comodo的网站上有根证书和中级证书 。 这五个证书与openssl req -new -days 365 -nodes -keyout www.mydomain.com.key -out www.mydomain.com.csr命令创build的两个证书有什么关系? 这两个是要求实际的证书?

我意识到,Apache的错误是指文件/etc/apache2/sites-available/www.example/com我搞砸了SSLCertificateFile /etc/apache2/ssl/www.example.com.csr文件typesSSLCertificateFile /etc/apache2/ssl/www.example.com.csr它应该根据linode文件来.crt

更新2

所以我进入了dreamhost,并复制了以下文件的关键字并映射了以下内容

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

改变了/sites-available/example.com的连接,它工作(Apache工作)。 这是否意味着ssl将连接我的域名时工作?

我不能在这里投票,或者发表评论,但是Adrian Perez是对的,你没有使用证书,而是使用证书签名请求。

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

CSR需要发送给authentication中心以validation您的身份并生成证书。 你可以使用下面的命令自行生成:

 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 

但是,当您在浏览器中访问该网站时,您将收到警告,因为这是一个自签名证书,因此不受信任。 不过,这是一个很好的方式,让你的头脑围绕过程,并testing该网站的工作。 基本步骤是:

  1. 生成一个私人密钥文件(只有这样做,第一次build立一个网站)
  2. 生成证书签名请求
  3. 向authentication机构支付大量的资金来validation和颁发证书(Thwate或类似的)
  4. 把密钥放在服务器上。

关于权限,确保key / crt只能被root(chmod 600)读/写,否则Apache会呻吟。

希望这可以帮助

看起来像你的证书文件是不可读的(或丢失)

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

你检查权限/path?

此外,DNS必须设置或证书将显示一些错误(取决于浏览器)

您可以下载名为Keystore Explorer的Java程序来打开并查看证书以validation其是否有效。 与Apache的事情是证书需要在一定的格式。 这个网站可能有助于解释你所需要的格式,这似乎是PEM。

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

此外,您可以像其他用户说的那样检查权限和path,但是我认为问题是关于文件中的内容。

您可以检查删除文件并创build一个新的空白文件,并将证书数据粘贴到文件中。

问候!

直到拥有实际的证书,才能设置SSL。 你所拥有的是一个证书的请求,该证书应该被发送给证书颁发机构,让他们颁发证书。 此外,尽pipe您可以在不使用DNS的情况下使服务器正常工作,但客户端将无法访问除IP以外的服务器,由于证书无法validationIP,因此会生成警告。

更新 :这听起来像你现在做的一切。 如果还有其他问题,可以在DNS设置完成后解决。