OpenSSL在Apache和Dovecot 下的使用(一)

在这有两部分的系列中,Carla Schroder 会向你展示如何创建自己的 OpenSSL 证书以及如何配置 Apache 和 Dovecot 来使用它们。

这么长时间之后,我的读者们,这里是我给你们承诺的在 Apache 中使用 OpenSSL 的方法,下周你会看到在 Dovecot 中使用 SSL。 在这个分为两部分的系列中,我们将学习如何创建自己的 OpenSSL 证书,以及如何配置 Apache 和 Dovecot 来使用它们。

这些例子基于这些教程:

  • 给初学者看的在 Ubuntu Linux 上使用 Apache
  • 给初学者看的在 Ubuntu Linux 上使用 Apache:第 2 部分
  • 给初学者看的在 CentOS Linux 上使用 Apache

创建你的证书

Debian/Ubuntu/Mint 会在 /etc/ssl 中存储私钥和证书的符号链接。系统自带的证书保存在 /usr/share/ca-certificates 中。你安装或创建的证书在 /usr/local/share/ca-certificates/ 中。

这个例子是对 Debian 而言。创建私钥和公用证书,将证书转换为正确的格式,并将其符号链接到正确的目录:


  1. $ sudo openssl req -x509 -days 365 -nodes -newkey rsa:2048 \ 
  2.    -keyout /etc/ssl/private/test-com.key -out \ 
  3.    /usr/local/share/ca-certificates/test-com.crt 
  4. Generating a 2048 bit RSA private key 
  5. .......+++ 
  6. ......................................+++ 
  7. writing new private key to '/etc/ssl/private/test-com.key' 
  8. ----- 
  9. You are about to be asked to enter information that will  
  10. be incorporated into your certificate request. 
  11. What you are about to enter is what is called a Distinguished  
  12. Name or a DN. There are quite a few fields but you can leave some blank 
  13. For some fields there will be a default value, 
  14. If you enter '.', the field will be left blank. 
  15. ----- 
  16. Country Name (2 letter code) [AU]:US 
  17. State or Province Name (full name) [Some-State]:WA 
  18. Locality Name (eg, city) []:Seattle 
  19. Organization Name (eg, company) [Internet Widgits Pty Ltd]:Alrac Writing Sweatshop 
  20. Organizational Unit Name (eg, section) []:home dungeon 
  21. Common Name (e.g. server FQDN or YOUR name) []:www.test.com 
  22. Email Address []:admin@test.com 
  23. $ sudo update-ca-certificates 
  24. Updating certificates in /etc/ssl/certs... 
  25. 1 added, 0 removed; done. 
  26. Running hooks in /etc/ca-certificates/update.d... 
  27. Adding debian:test-com.pem 
  28. done. 
  29. done. 

CentOS/Fedora 使用不同的文件结构,并不使用 update-ca-certificates,使用这个命令:


  1. $ sudo openssl req -x509 -days 365 -nodes -newkey rsa:2048 \ 
  2.    -keyout /etc/httpd/ssl/test-com.key -out \ 
  3.    /etc/httpd/ssl/test-com.crt 

最重要的条目是 Common Name,它必须与你的完全限定域名(FQDN)完全匹配。此外其它信息都是任意的。-nodes 用于创建一个无密码的证书,这是 Apache 所必需的。-days 用于定义过期日期。更新证书是一个麻烦的事情,但这样应该能够额外提供一些安全保障。参见 90 天证书有效期的利弊中的讨论。

配置 Apache

现在配置 Apache 以使用你的新证书。如果你遵循给初学者看的在 Ubuntu Linux 上使用 Apache:第 2 部分,你所要做的就是修改虚拟主机配置中的 SSLCertificateFile 和 SSLCertificateKeyFile,以指向你的新私钥和公共证书。来自该教程中的 test.com 示例现在看起来像这样:


  1. SSLCertificateFile /etc/ssl/certs/test-com.pem 
  2. SSLCertificateKeyFile /etc/ssl/private/test-com.key 

CentOS 用户,请参阅在 CentOS wiki 中的在 CentOS 上设置 SSL 加密的 Web 服务器一文。过程是类似的,wiki 会告诉如何处理 SELinux。

测试 Apache SSL

一个简单的方法是用你的网络浏览器访问 https://yoursite.com,看看它是否可以正常工作。在第一次这样做时,你会在你过度保护的 web 浏览器中看到可怕的警告说网站是不安全的,因为它使用的是自签名证书。请忽略你这个敏感的浏览器,并单击屏幕创建永久性例外。 如果你遵循在给初学者看的在 Ubuntu Linux 上使用 Apache:第 2 部分上的示例虚拟主机配置,那么即使你的网站访问者尝试使用纯 HTTP,你的网站的所有流量都将强制通过 HTTPS。

一个很好测试方法是使用 OpenSSL。是的,有一个漂亮的命令来测试这些东西。试下这个:


  1. $ openssl s_client -connect www.test.com:443 
  2. CONNECTED(00000003) 
  3. depth=0 C = US, ST = WA, L = Seattle, O = Alrac Writing Sweatshop,  
  4. OU = home dungeon, CN = www.test.com, emailAddress = admin@test.com 
  5. verify return:1 
  6. --- 
  7. Certificate chain 
  8.  0 s:/C=US/ST=WA/L=Seattle/O=Alrac Writing Sweatshop/OU=home  
  9.      dungeon/CN=www.test.com/emailAddress=admin@test.com 
  10.    i:/C=US/ST=WA/L=Seattle/O=Alrac Writing Sweatshop/OU=home  
  11.      dungeon/CN=www.test.com/emailAddress=admin@test.com 
  12. --- 
  13. Server certificate 
  14. -----BEGIN CERTIFICATE----- 
  15. [...] 

这里输出了大量的信息。这里有很多关于 openssl s_client 的有趣信息; 现在足够我们知道我们的 web 服务器是否使用了正确的 SSL 证书。

创建一个证书签名请求

如果你决定使用第三方证书颁发机构(CA),那么就必须创建证书签名请求(CSR)。你将它发送给你的新 CA,他们将签署并将其发送给您。他们可能对创建你的 CSR 有自己的要求; 这是如何创建一个新的私钥和 CSR 的典型示例:


  1. $ openssl req -newkey rsa:2048 -nodes \ 
  2.    -keyout yourdomain.key -out yourdomain.csr 

你也可以从一个已经存在的 key 中创建一个 CSR:


  1. $ openssl req  -key yourdomain.key \ 
  2.    -new -out domain.csr 

今天就是这样了。下周我们将学习如何正确地在 Dovecot 中设置 OpenSSL。

作者:CARLA SCHRODER

来源:51CTO

时间: 2025-01-29 07:56:37

OpenSSL在Apache和Dovecot 下的使用(一)的相关文章

OpenSSL在Apache和Dovecot 下的使用(二)

本篇中,Carla Schroder 会解释如何使用 OpenSSL 保护你的 Postfix/Dovecot 邮件服务器 在上周,作为我们 OpenSSL 系列的一部分,我们学习了如何配置 Apache 以使用 OpenSSL 并强制所有会话使用 HTTPS. 今天,我们将使用 OpenSSL 保护我们的 Postfix/Dovecot 邮件服务器.这些示例基于前面的教程; 请参阅最后的参考资料部分,了解本系列中以前的所有教程的链接. 你需要配置 Postfix 以及 Dovecot 都使用

OpenSSL 在 Apache 和 Dovecot 下的使用(二)

Postfix 配置 你必须编辑 /etc/postfix/main.cf 以及 /etc/postfix/master.cf.实例的 main.cf 是完整的配置,基于我们先前的教程.替换成你自己的 OpenSSL 密钥和证书名以及本地网络地址. compatibility_level=2 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu/GNU) biff = no append_dot_mydomain = no myhostname

OpenSSL 在 Apache 和 Dovecot 下的使用(一)

创建你的证书 Debian/Ubuntu/Mint 会在 /etc/ssl 中存储私钥和证书的符号链接.系统自带的证书保存在/usr/share/ca-certificates 中.你安装或创建的证书在 /usr/local/share/ca-certificates/中. 这个例子是对 Debian 而言.创建私钥和公用证书,将证书转换为正确的格式,并将其符号链接到正确的目录: $ sudo openssl req -x509 -days 365 -nodes -newkey rsa:2048

Ubuntu使用带OpenSSL的Apache HTTP服务器提供安全web页服务

本指南主要是向读者介绍安全套接层,(SSL)应用级协议,以及 SSL 在 http://www.aliyun.com/zixun/aggregation/9511.html">OpenSSL 上的特定实现.在简要介绍 OpenSSL 是什么,它对什么有用之后,本指南将在客户-服务器环境中举例说明 OpenSSL 的特定用法,并提供应用程序从 OpenSSL 中获利的典型示例.最后,本指南通过演示从您 Ubuntu 计算机要求使用带 OpenSSL 的 Apache 超文本传输协议(HTTP

PHP+Apache在Win9x下的安装和配置

apache 在PHP邮件列表中问得最多的问题可能就是:"如何在我的Windows机器上安装PHP?",那么也许我可以帮助回答这个问题.当你正确安装完成后,你会发现在Windows下开发PHP程序还是不错的. 本教程的目的是向你展示如何用"Apache和Windows"的组合来开发PHP程序. 教程中如未指明具体版本,则PHP为PHP3或PHP4 Beta 2或3,Apache为 1.3.x. 一.安装Apache 首先,你须要一个WEB服务器,我推荐Apache.

php+apache在windows下 国际化(多语言切换不成功)

问题描述 php+apache在windows下 国际化(多语言切换不成功) 5C OS: win7 64环境:wampserver 64位 (php5.4.12 +apache2.4.4)安装运行成功 php_gettext.dll开启前提:语言文件 *.mo 及 *.po 存在&路径没问题&编码为UTF-8如图 <?php $lan = $_REQUEST [ 'lan' ]; if ( $lan == 'zh_CN' ){ putenv('LANG=zh_CN' ); pute

java-linux 部署项目启动时报struts.apache.org windows下项目没报错

问题描述 linux 部署项目启动时报struts.apache.org windows下项目没报错 10:34:24,218 ERROR [STDERR] Nested exception: 10:34:24,218 ERROR [STDERR] java.net.UnknownHostException:0:34:23,146 INFO [ConnectionFactoryBindingService] Bound ConnectionManager 'jboss.jca:service=D

apache在win2003下的安全设置方法_win服务器

如果web服务器的所有资源都在本地系统上,这样做会问题比较少,但是将会具有很 大的安全 权限来影响本地机器,因此千万不能开启System帐号的网络权限! 于是要创建一个新的帐户来替代这个帐号启动apache并设置相应的权限: 1.在计算机管理里的本地用户和组里面创建一个帐户,例如:apache,密码设置为 apacheuser,加入guests组(如果出现问题,可以赋予user权限): 2.打开开始->管理工具->本地安全策略,在用户权限分配中选择"作为服务登陆",添加ap

apache在win2003下的安全设置(配合文件夹权限目录,很好很安全)_Linux

于是要创建一个新的帐户来替代这个帐号启动apache并设置相应的权限: 1.在计算机管理里的本地用户和组里面创建一个帐户,例如:apache,密码设置为 apacheuser,加入guests组(如果出现问题,可以赋予user权限): 2.打开开始->管理工具->本地安全策略,在用户权限分配中选择"作为服务登陆",添加apache用 户: 3.计算机管理里面选择服务,找到apache2.2,先停止服务,右击->属性,选择登陆,把单选框从本地系统帐户切换到此帐户,然后查