`
student_11
  • 浏览: 16223 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Apache 2.2-SSL操作大全

阅读更多
Apache 2.2-SSL操作大全

    * 制作CSR申请文件
    * 安装证书文件
    * 客户端证书认证
    * 强制HTTPS访问
    * 访问控制举例
    * 证书的备份(导出)
    * 证书的恢复(导入)
    * 通配符和多域名证书在虚拟主机上的部署
    * Openssl编译简介


制作CSR申请文件

制作Apache下使用的CSR请求文件,最简单的办法就直接使用我们的 OpenSSL CSR在线生成器: https://www.myssl.cn/openssl/createcsr.asp
(注意:您必须同时保存server.key和server.csr文件)

Apache 2.2 SSL主要采用BASE64位的PEM文件格式,可以采用Openssl命令行工具来生成CSR文件,OpenSSL工具是免费的,可以从www.openssl.org下载到最新的源码,但需要自己编译(见Openssl编译简介),你也可以下载使用已经编译好的OpenSSL 0.9.8.a for win32,下载地址是: http://www.myssl.cn/download/OpenSSL_0.9.8.a_Win32.zip

1、Openssl是一个命令行工具,首先将下载包解压到C:\openssl下。

2、打开DOS命令行窗口,进入C:\openssl,输入命令:
openssl req -new -nodes -keyout server.key -out server.csr

Loading 'screen' into random state - done
Generating a 1024 bit RSA private key
...........................++++++
....................................++++++
writing new private key to 'server.key'
-----
You are about to be asked to enter information that will be
incorporated into your certificate request.
What you are about to enter is what is called a
Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:Shanghai
Locality Name (eg, city) []:Shanghai
Organization Name (eg, company) [Internet Widgits Ltd]:
Shanghai Fastcom Technology Co.,Ltd.
Organizational Unit Name (eg, section) []:IT Dept.
Common Name (eg, YOUR name) []:www.myssl.cn
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

3、在完成了如上的交互信息输入后,当前目录下将产生两个文件:server.key 和 server.csr。请妥善保存这两个文件,请不要泄露server.key私钥文件。

4、在这一命令执行的过程中,系统会要求您填写如下信息:

Country Name (2 letter code) 使用国际标准组织(ISO)国码格式,填写2个字母的国家代号。中国请填写CN。
State or Province Name (full name) 省份,比如填写Shanghai
Locality Name (eg, city) 城市,比如填写Shanghai
Organization Name (eg, company) 组织单位,比如填写公司名称的拼音
Organizational Unit Name (eg, section) 比如填写IT Dept
Common Name (eg, your websites domain name): 行使 SSL 加密的网站地址。请注意这里并不是单指您的域名,而是直接使用 SSL 的网站名称 例如:pay.abc.com。 一个网站这里定义是:
abc.com 是一个网站;
www.abc.com 是另外一个网站;
pay.abc.com 又是另外一个网站。
Email Address 邮件地址,可以不填
A challenge password 可以不填
An optional company name 可以不填

5、如何产生2048位的密钥对?

在上面的命令行交互中,我们看到“Generating a 1024 bit RSA private key”,即系统缺省采用1024位的RSA密钥长度,一般来说1024位是足够的,但是在申请EV证书的时候,我们必须采用2048位的密钥长度,要生成2048位的密钥,可以修改上面的命令行:(斜体部分为增加的参数)
openssl req -new -nodes -newkey rsa:2048 -keyout server.key -out server.csr

6、如何制作中文的CSR文件?

中文CSR文件,主要指企业名称、部门,城市,省份等信息采用中文,通用名和国家代码仍然必须是英文的,GeoTrust目前已经全面支持中文的CSR,要制作中文的CSR,最简单的办法仍然是采用我们的在线CSR生成器: https://www.myssl.cn/openssl/createcsr.asp

如果希望自己通过Openssl工具来制作中文CSR就需要多费一些工夫了,下面详细介绍一下采用Openssl命令行制作中文CSR的方法。
Openssl本身是可以支持UTF-8编码来支持中文的,但是如果通过DOS命令行是无法输入UTF-8的中文字符的,所以我们必须采用 Opnessl.cnf配置文件的缺省值来实现中文字的输入。采用一个文本编辑器,最好是支持utf-8字符的,我采用UltraEdit,打开 Openssl.cnf文件,首先修改:

string_mask = utf8only

这句话将强制字符的输入采用UTF-8的编码格式,然后修改缺省DN信息,录入我们需要合中文字符,如下

commonName_default = www.myssl.cn
organizationName_default = 上海迅通科技有限公司
organizationalUnitName_default = IT 部门
stateOrProvinceName_default = 上海
localityName_default = 上海
countryName_default = CN

然后将文件按utf-8,no bom的编码格式保存,在Ultraedit下,请选择“另存为”,格式为“UTF-8 - NO-BOM”。如果没有可以支持UTF-8的编辑工具,也可以下载一个ICONV来做编码转换工作。

准备好openss.cnf文件后,输入命令行:
openssl req -utf8 -config config.cnf -new -nodes -batch -keyout server.key -out server.csr
系统将自动生成CSR文件,保存在server.csr中。

CSR已经做好,最后强调,必须同时保存好server.csr和server.key2个文件,尤其是server.key一定丢失,将无法再使用这个证书。

安装证书文件

1、将证书内容存为一个文件:

您会收到一封来自迅通诚信的邮件,证书内容附在邮件中。如果证书是以附件的形式(Cert.cer)夹带在邮件中,您就可以直接应用它。如果您的证书中以文本的方式存在邮件中,您就需要将邮件中的证书部分的内容用Vi或Notepad存成一个纯文本文件。不要将其存成Microsoft Word 或其它字处理软件格式,并确定证书内容中不含有空行和空格,文件名可以为server.cer。如下所示:
[将证书保存为文本文件格式]
将保存好的server.cer文件和制作CSR时候生成的server.key一起复制到服务器上。

2、修改httpd.conf文件。

Apache一般有2个版本下载,一个是带SSL模块的,一个是不带SSL的,请首先检查自己的SSL是包含了SSL模块的,否则就没法做了。 Apache的参数配置都在httpd.conf文件中,SSL配置也是如此,此外还可以通过include httpd-ssl.conf来包含一个专门配置SSL的配置文件,如果激活了httpd-include ssl.conf,则可以打开httpd-ssl.conf来配置相应参数。

一般,我们直接在httpd.conf文件中直接配置SSL参数:

#加载模块mod_ssl.so,此模块是启用SSL功能必须的。
LoadModule ssl_module modules/mod_ssl.so

#监听443端口
Listen 443

#建立一个SSL的虚拟站点,避免SSL配置影响原来HTTP的站点配置。
<VirtualHost _default_:443>
DocumentRoot "C:/Program Files/Apache2/htdocs"
ServerName www.myssl.cn:443
SSLEngine on
SSLCertificateFile "C:/SSL/server.cer"
SSLCertificateKeyFile "C:/SSL/server.key"
SSLCertificateChainFile "C:/SSL/chain.cer"
ErrorLog "C:/Program Files/Apache2/logs/error.log"
TransferLog "C:/Program Files/Apache2/logs/access.log"
</VirtualHost>

#说明主站是使用HTTP通信的,只有上面虚拟站点有SSL
SSLEngine off                              


配置参数说明如下(完整的SSL配置参数见这里):

    * Listen 443:
      SSL协议监听的端口,同下面Virtualhost 中的端口需要匹配,SSL协议缺省使用443端口,也有使用8443的情况。
    * SSLEngine on:
      SSL功能打开,如果在 Virtualhost出现这句,则仅作用于虚拟机站点配置范围,这个虚拟机站点全部使用SSL通信,如果出现在Virtualhost外,则作用于全局,整个服务器都使用SSL(HTTPS)通信,不能采用HTTP通信,所以通常都在Virtualhost中加这句。
    * SSLCertificateFile:
      证书文件,server.cer
    * SSLCertificateKeyFile
      私钥文件,server.key
    * SSLCertificateChainFile
      中间链证书,请根据产品下载中间链证书,并保存为'chain.cer'
          o 全球信SSL专业版证书
            (QuickSSL Premium)
          o 全球信SSL企业版证书
            (True BusinessID)
          o 全球信SSL企业版多域名证书
            (True BusinessID Multidomain)
          o 全球信SSL企业版通配符证书
            (True BusinessID Wildcard)
          o 全球信SSL至尊版证书
            (True BusinessID EV)
          o 闪快SSL普及版
            (RadidSSL)
    * Errorlog,TranksferLog:
      日志文件
    * SSLEngine off:
      整个站点,除了虚拟站点外,关闭SSL,仍然支持HTTP通信。

3、重新启动Apache,如果是在Linux下,输入:
apachectl stop
apachectl startssl

客户端证书认证

1、基本客户证书认证

强制客户对整个站点都必须采用客户证书认证的方式,可以在原来的配置下增加如下参数:

<VirtualHost _default_:443>
......
......
......
# 需要客户有一个客户端证书,并由ca.cer这个CA证书签署
SSLVerifyClient require
SSLVerifyDepth 1
SSLCACertificateFile conf/ssl.crt/ca.cer
</VirtualHost>

2、如果只要求对特定目录采用客户证书认证方式,其他目录都不需要客户端证书,则可以采用如下配置:

<VirtualHost _default_:443>
......
......
......
# 需要客户有一个客户端证书,并由ca.cer这个CA证书签署
SSLVerifyClient none
SSLCACertificateFile conf/ssl.crt/ca.crt
<Location /secure/area>
SSLVerifyClient require
SSLVerifyDepth 1
</Location>
</VirtualHost>


强制HTTPS访问

强制HTTPS访问,主要通过将用户访问的HTTP请求自动转换为HTTPS请求,有两种方式:一种是通过编程的方式,详见:"强制用户通过SSL访问网站" ;另一种方式则是通过Apache强大的Rewrite功能。

如果要针对整个网站全部执行HTTP自动转为HTTPS的功能,可以在httpd.conf文件中,增加:

RewriteEngine on
RewriteCond   %{HTTPS} !=on
RewriteRule   ^(.*)  https://%{SERVER_NAME}$1 [L,R]

如果,仅要求对\secure目录下的内容强制采用HTTPS访问,可以在httpd.conf文件中加入如下语句:


<Directory "C:\Program Files\htdocs\secure">
RewriteEngine on
RewriteCond   %{HTTPS} !=on
RewriteRule   ^(.*)  https://%{SERVER_NAME}/secure/$1 [L,R]
</Directory>


访问控制举例

如何对来自Internet并要访问Intranet的客户强制采用强加密的HTTPS通信,并采用基本或者客户证书的认证方式?同时还要确保来自Intranet的客户可以进行HTTP访问?

假设IntranetIP地址段是192.160.1.0/24,Intranet站点子区域的URL是/subarea ,则可以在HTTPS虚拟主机站点以外增加如下配置(这样可以同时作用于HTTPS和HTTP):

SSLCACertificateFile conf/ssl.crt/company-ca.crt

<Directory /usr/local/apache2/htdocs>
# subarea以外的区域只允许来自Intranet的访问
Order                deny,allow
Deny                 from all
Allow                from 192.168.1.0/24
</Directory>

<Directory /usr/local/apache2/htdocs/subarea>
# 在subarea以内,允许所有来自Intranet的访问,
# 但对来自Internet的访问,仅允许HTTPS+Strong-Cipher+Password
# 或者HTTPS+Strong-Cipher+Client-Certificate

# 如果使用了HTTPS,则确保使用高强度加密
# 同时允许客户以基本认证的形式认证
SSLVerifyClient      optional
SSLVerifyDepth       1
SSLOptions           +FakeBasicAuth +StrictRequire
SSLRequire           %{SSL_CIPHER_USEKEYSIZE} >= 128

# 强制来自Internet的客户使用HTTPS
RewriteEngine        on
RewriteCond          %{REMOTE_ADDR} !^192\.168\.1\.[0-9]+$
RewriteCond          %{HTTPS} !=on
RewriteRule          ^(.*)  https://%{SERVER_NAME}$1 [L,R]

# 允许网络访问和基本认证
Satisfy              any

# 控制网络访问
Order                deny,allow
Deny                 from all
Allow                192.168.1.0/24

# HTTP基本认证
AuthType             basic
AuthName             "Protected Intranet Area"
AuthBasicProvider    file
AuthUserFile         conf/protected.passwd
Require              valid-user
</Directory>


证书的备份(导出)

在Apache下的证书备份是非常简单的,打开httpd.conf文件,找到SSLCertificateFile和SSLCertificateKeyFile指定的2个文件,通常是.cer(.crt)和.key文件,将这两个文件复制到备份媒质上即可。

证书的恢复(导入)

要恢复Apache的证书同样非常简单,将备份的.cer和.key文件,复制到新的服务器上,然后参考上面服务器证书安装说明,修改httpd.conf文件即可。

通配符和多域名证书在虚拟主机上的部署

如果要在一个IP地址上部署多个SSL网站,一种办法就是给每个网站分配不同的端口号,但这给用户使用带来很多麻烦。如果要在同一个IP地址的 443端口上部署多个SSL网站,必须保证这些网站的域名都能匹配相同的一张SSL证书。这是因为SSL握手过程是通过IP+Port来进行通信,一个 IP的443端口只能返给客户一张SSL证书(即使配置了多张证书,也只能返回第一张,因为用户请求信息中,只有看到IP地址,无法区分用户需要哪个证书),如果这张证书能够满足这些网站的主机名匹配要求,就可以使用。

一般能匹配多个主机名的证书有通配符证书*.domain.com和多域名证书(www.domain.com,ftp.domain.com 等),以下我们提供一个典型同一个IP上的多主机名部署配置,www.domain.com对应的根目录在WWW下,ftp.domain.com对应的根目录在FTP下

NameVirtualHost 11.22.33.44:443

<VirtualHost 11.22.33.44:443>
DocumentRoot "C:/Apache2.2/htdocs/www"
ServerName www.domain.com
SSLEngine on
SSLCertificateFile "C:/Apache2.2/conf/server.cer"
SSLCertificateKeyFile "C:/Apache2.2/conf/server.key"
SSLCertificateChainFile "C:/Apache2.2/conf/chain.cer"
</VirtualHost>

<VirtualHost 11.22.33.44:443>
DocumentRoot "C:/Apache2.2/htdocs/ftp"
ServerName ftp.domain.com
SSLEngine on
SSLCertificateFile "C:/Apache2.2/conf/server.cer"
SSLCertificateKeyFile "C:/Apache2.2/conf/server.key"
</VirtualHost>


Openssl编译简介

1、Openssl是开源的,可以到http://www.openssl.org/source/下载最新的版本。然后解压到c:\openssl。

2、要编译Openssl,需要下载并安装ActivePerl,并在系统路径中添加“C:\Perl\site\bin;C:\Perl\bin”

3、安装Vs2003(也可以安装VS2005,2008但这2个版本的VC编译出来的Openssl是有BUG的,在特定情况下会产生win32异常错误,仅适合偶尔用一下的情况)。

4、使用VS2003下的Visual Studio.net 2003 Command Prompt进入控制台模式(这个模式会自动设置各种环境变量)

5、进入c:\openssl。

6、输入(注意大小写): perl Configure VC-WIN32

7、输入: ms\do_ms

8、输入: nmake -f ms\ntdll.mak

9、Openssl已经编译好了,执行程序在out32dll目录下。
分享到:
评论

相关推荐

    Apache_2.4.23-x86-no-ssl.zip

    Apache HTTP Server 2.4.23 x86 (32 bit) Windows Installers,不含SSL。

    Apache2.2中文版参考手册

    CHM版 Apache2.2中文版参考手册 Apache HTTP Server Version 2.2 文档 版本说明 文档目录: Apache 2.1/2.2 版本的新特性 Apache 2.0 版本的新特性 从 2.0 升级到 2.2 Apache许可证 参考手册 编译与安装 启动...

    Apache2.2中文参考.chm

    Apache2.2中文参考.chm 版本说明 Apache 2.1/2.2 版本的新特性 Apache 2.0 版本的新特性 从 2.0 升级到 2.2 Apache许可证 参考手册 编译与安装 启动 停止与重新启动 运行时配置指令 指令速查 模块索引 多...

    Apache2.2.4 And mod_jk-apache-2.2.4.so

    apache_2.2.4-win32-x86-no_ssl.msi 与 mod_jk-apache-2.2.4.so

    配合apache(2.2.x)+openssl(0.9.6->1.0.1升级)过程博文环境搭建的资源

    这些资源是配合apache(2.2.x)+openssl(0.9.6-&gt;1.0.1升级)过程博文环境搭建中所需要的资源,不是太好找,所以都传上来,主要有: 1.升级opensslV1.0.1b单独用到的三个文件:libeay32.dll,openssl.exe,ssleay32.dll ...

    Apache2.2中文手册

    Apache 2.1/2.2 版本的新特性 Apache 2.0 版本的新特性 从 2.0 升级到 2.2 Apache许可证 参考手册 编译与安装 启动 停止与重新启动 运行时配置指令 指令速查 模块索引 多路处理模块(MPM) 过滤器 处理器 ...

    Apache 2.2 中文手册

    * Apache 2.1/2.2 版本的新特性 * Apache 2.0 版本的新特性 * 从 2.0 升级到 2.2 * Apache许可证 参考手册 * 编译与安装 * 启动 * 停止与重新启动 * 运行时配置指令 * 指令速查 * 模块索引 * 多路处理...

    httpd-2.2.25-win32-x86-no_ssl.msi

    httpd-2.2.25-win32-x86-no_ssl.msi 集成了Apache2.0和Apache2.2.

    httpd-2.4-win64-x86-no_ssl.7z

    PHP服务器部署工具 ApacheHttp服务。

    测试通过的apache2.17_tomcat6集群

    apache2.2+tomcat6集群已经配置好,tomcat优化过,在实际项目发布中直接将项目复制到集群中的所有tomcat的webapps中即可, 此配置中包含是3个tomcat集群, 安装步骤大概如下: 1:安装httpd-2.2.17-win32-x86-no_ssl...

    apache_2.2.2-win32-x86-no_ssl.msi

    apache httpd 官方安装包。 没积分的自己去官网下吧。 http://archive.apache.org/dist/httpd/binaries/win32/

    Apache HTTP Server Version 2.2 文档(2013.4.10最新)

    Apache 2.2 新特性概述 配置段(容器) 服务器全局配置 站点导航 停止和重启 suEXEC支持 致谢与译者声明 从2.0升级到2.2 从1.3升级到2.0 从URL到文件系统的映射 Apache 1.3 API 备忘录 APR中内存分配的调试 Apache 2.0...

    Apache HTTP Server 2.2.29 (httpd) msi 安装版

    包含两个版本 apache_2.4.4-x64-openssl-1.0.1e.msi apache_2.4.4-x64-no-ssl.msi

    winxp+svn+apache安装配置全说明

    Windows XP SP3 专业版 Setup-Subversion-1.6.4.msi 服务器端 TortoiseSVN-1.6.3.16613-win32-...编辑Apache的配置文件(我的为C:\Program Files\Apache Software Foundation\Apache2.2conf\httd.conf),修改以下内容:

    TCP-IP技术大全

    TCP/IP和Internet 8 2.1 一段历史 8 2.1.1 ARPANET 8 2.1.2 TCP/IP 9 2.1.3 国家科学基金会(NSF) 9 2.1.4 当今的Internet 12 2.2 RFC和标准化过程 12 2.2.1 获得RFC 13 2.2.2 RFC索引 13...

    Apache HTTP Service 2.2.17(阿帕奇服务端2.2.17)

    该资源是Apache HTTP Service 2.2系列的主流版本,用于作版本库的服务器端。可以兼容Win2000、XP、vista、Win7等Windows操作系统。 SVN客户端—TortoiseSVN-1.6.12.20536-win32-svn-1.6.15.msi下载地址: ...

    护卫神.Apache大师 v3.0.0

    特色功能:1、支持切换apache2.2和2.4;2、整合安装Apache+Tomcat,支持JSP;3、支持7个PHP版本同时使用,不同网站使用不同的PHP版本;4、支持SSL证书,让网站更安全;5、支持伪静态;6、内置安全检测工具。

    Apache HTTP Server 2.2.19.rar

    Apache HTTP Server 2.2.19.rar HTTP服务器软件之一,可通过简单的API扩展Perl/Python解释器可被编译到服务器中,完全免费,完全源代码开放。可以创建一个每天有数百万人访问的Web服务器。

    Apache Http Server 2.2

    里面包含了两个不同的版本,一个带有SSL(安全套接层),另一个是不带的!

    winxp下Apache + PHP + MySql安装设置方法

    1.Apache2.2 选择Custom,然后配置安装目录,默认向下,安装完Apache后。可以先测试下, 浏览器IP地址输入127.0.0.1。 可以看到已经正常工作了。 开始配置Apache, 在安装目录下的 ~\Apache Software Foundation\...

Global site tag (gtag.js) - Google Analytics