科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网网络频道用SSL和TinyCA保护你的web服务器

用SSL和TinyCA保护你的web服务器

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文解释如何使用OpenSSL和TinyCA在OpenSuse 10.2服务器上安装一个虚拟主机。

作者:黄永兵/译 来源:51CTO.com 2008年9月4日

关键字: Web服务器 TinyCA SSL

  • 评论
  • 分享微博
  • 分享邮件

  SSL非常适合HTTP,因为它能提供一些保护,即使只有通讯一方是结果认证的,在因特网上处理HTTP事物时,通常只有服务器是结果认证的,本文解释如何使用OpenSSL和TinyCA在OpenSuse 10.2服务器上安装一个虚拟主机。

  ◆步骤1:创建index页面

  在“Apache虚拟主机快速搭建攻略”一文中,我们已经做了这件事情,现在只需要创建下面的目录:

  mkdir /srv/www/htdocs/ssl

  然后可以将你的web页面放入这个目录,我们只创建一个index.html文件,该文件的内容显示服务器的类型,文件内容样例:

  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

  <html>

  <head>

  <meta content="text/html; charset=ISO-8859-1"

http-equiv="content-type">  http-equiv="content-type">

  <title></title>

  </head>

  <body>

  <div style="text-align: center;"><span

  style="font-weight: bold;">This is my secure webserver working on

  Port 443.<br>

  <a href="http://www.linux-tip.net">Linux-Tip.net</a></span></div>

  </body>

  </html>

  ◆步骤2:在端口443上配置基于ip的虚拟主机

  OpenSuse在/etc/apache2/vhosts.d目录下存放虚拟主机的配置文件,在启动过程中,Apache会自动应用该目录下所有的.conf文件,使用ssl模板,可以很轻松地创建一个新的配置文件:

  cd /etc/apache2/vhosts.d/

  cp vhost-ssl.template ssl.conf

  下面这些行是你应该做适当修改的:

  VirtualHost 192.168.33.234:443 用你的ip地址替换这里的ip地址,保留443端口

  DocumentRoot 使用你在步骤1中创建的目录

  SSLCertificateFile 使用步骤3中创建的服务器证书

  SSLCertificateKeyFile 使用步骤3中创建的服务器密钥文件

  SSLCACertificateFile 使用步骤3中创建的CA证书

  这个配置文件最后看起来象:

  <IfDefine SSL>

  <IfDefine !NOSSL>

  ##

  ## SSL Virtual Host Context

  ##

  <VirtualHost 192.168.33.234:443>

  DocumentRoot "/srv/www/htdocs/ssl/"

  ServerAdmin webmaster@linux-tip.netThis e-mail address is being protected from spam bots, you need JavaScriptenabled to view it

  ErrorLog /var/log/apache2/error_log

  TransferLog /var/log/apache2/access_log

  SSLEngine on

  SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL

  SSLCertificateFile /srv/www/etc/server.crt

  SSLCertificateKeyFile /srv/www/etc/server.key

  SSLCACertificateFile /srv/www/etc/ca-cert.crt

  #SSLVerifyClient require

  #SSLVerifyDepth 1

  <Files ~ "\.(cgi|shtml|phtml|php3?)$">

  SSLOptions +StdEnvVars

  </Files>

  <Directory "/srv/www/htdocs/ssl/">

  Options All

  Order Allow,Deny

  Allow from all

  </Directory>

  SetEnvIf User-Agent ".*MSIE.*" \

  nokeepalive ssl-unclean-shutdown \

  downgrade-1.0 force-response-1.0

  CustomLog /var/log/apache2/ssl_request_log ssl_combined

  </VirtualHost>

  </IfDefine>

  </IfDefine>

  重要提示:要在Apache服务器上启用SSL支持,必须配置/etc/sysconfig/apache2文件,请将下面这行(大约在132行)修改为:

  APACHE_SERVER_FLAGS="SSL"

  ◆步骤3:创建证书和密钥

  TinyCA是一个用Perl/Gtk编写的管理小型CA(认证机构)的简单图像用户接口,它作为openssl的前端工作。如果你经常更新你的Suse,你应该在你的升级服务器上发现这个工具,请使用YaST安装它。

  或从http://tinyca.sm-zone.net/下载,请注意正常运行TinyCA需要perl-Gtk2,可以在Linux终端下运行

  tinyca &

  如果你是以root登陆工作的,TinyCA将在/root/.TinyCA目录下存储所有创建的证书,首先我们创建一个认证机构,如下图所示:

  接下来,我们创建一个服务器证书,点击“请求”(Request),然后点鼠标右键à“新建请求”(New Request),请填入下图所示的信息:

  现在开始签署请求,在你需要签名的请求上点鼠标右键“签署请求”( Sign Request)à“签署请求(服务器)”(Sign Request(Server)),输入前面创建CA时的密码。

  现在你应该发现分别有一个证书和密钥的条目,请仔细检查,它看起来应该象:

  我们后面也会用到客户端证书和密钥,让我们快速地创建它们,点击“请求”(Request)à然后点击鼠标右键à“新建请求”(New Request),请填入下图所示的信息:

  根据这个对请求进行签名,标记请求:在“签署请求”(Sign Request)上点击鼠标右键à“签署请求(客户端)”(Sign Request (Client)),输入CA密码。

  ◆步骤4:开启SSL支持运行Apache

  现在我们需要将服务器证书和密钥拷贝到合适的地方,请创建/srv/www/etc目录,我们将使用TinyCA导出密钥和证书,点击导出按钮(软盘图标)导出证书,如果你是以root身份工作,TinyCA会在/root目录下存储导出的证书:

  同样点击导出按钮导出密钥,重要!回答“无密语”( Without Passphrase)和“包括证书”( Include Certificate (PEM))问题时请回答“yes”,并输入一个密语,你将在后面使用这个密语加密密钥。

  拷贝这两个文件到/srv/www/etc下,并重命名:

  cp /srv/www/etc/server.crt

  cp /srv/www/etc/server.key

  cp ca_cert-cacert.pem /srv/www/etc/ca-cert.crt

  重启apache并观察是否有错误:

  /etc/init.d/apache2 restart

  或

  service apache2 restart

  如果没有出现错误,你就可以使用你喜爱的浏览器打开下面对应到测试页面的URL,请暂时接受这个证书,我们后面会用到它。

  ◆步骤5:客户端认证和访问控制

  当你了解你的用户团体(如一个封闭的用户组)在局域网内时,你可以使用简单的证书认证,我们已经通过我们自己的CA证书创建了一个签名的客户端证书,现在我们要再次校验客户端证书,你可能已经注意到在我们的配置文件/etc/apache2/vhost.d/ssl.conf中有下面两项:

  #SSLVerifyClient require

  #SSLVerifyDepth 1

  我们注释掉了这两行,别忘了保存这个文件,然后重启apache,如果你现在访问你的服务器,你应该收到下面这个错误:

  接下来你要找到一个方法将客户端证书传输给想要访问你web页面的人,使用TinyCA将它导出到root目录,点击“证书”( Certificates),然后对其标记,再点击鼠标右键à选择“导出证书”( Export Certificate),请如下选择“PKCS#12”、“Include Key (PEM)”和“Include Fingerprint (PEM)”:

  请记住这一步使用的密码,后面你需要用它将证书导入到你的浏览器(查看步骤6)。

  将文件拷贝到用户home目录或用USB闪存盘存储起来传输给用户

  ◆步骤6:导入证书到你喜爱的浏览器

  如果你正在使用MozillaFirefox,请使用“Firefox首选项”à“加密”à“你的证书”,然后点击导入按钮:

  打开证书文件name.p12,输入你在步骤5中的密码。

  如果不出现错误,你会发现你的客户端名字已经列在你的证书管理器中了。

  现在你访问web页面就没有问题了。

  原文出处:Secure your webserver using SSL and TinyCA

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章