视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Apache配置HTTPS协议
2025-09-29 02:52:25 责编:小OO
文档
Apache配置HTTPS协议搭载SSl配置全过程

1.安装必要的软件 

从Apache官方(www.apache.org)下载必要的ApacheHttpServer安装包,可以直接官方提供的绑定openssl的apache.文件名是:httpd-2.2.15-win32-x86-openssl-0.9.8m-r2.msi(我用的是Apache2.2.15for windows的版本,你可以点击此处下载最新的版本进行安装,最好选择含有openssl版本的哦)

否则单独安装windows下的openssl比较麻烦,要么找到一个第三方的编译结果,要么自己编译 

安装完毕后检查检查在Apache安装路径的bin下是否有以下文件:

     openssl.exe

     ssleay32.dll

     libeay32.dll

2. 生成服务器证书 

安装好在bin目录下有一个openssl.exe文件,用来生成证书和密钥。 

1). 生成服务器用的私钥文件server.key

(注:在Windows操作系统环境下需先设置Openssl环境变量:在DOS命令下进入conf目录,执行命令行:set OPENSSL_CONF=..\\conf\\openssl.cnf;请在执行之前确保openssl.cnf存在,否则会出现:WARNING: can't open config file: /usr/local/ssl/openssl.cnf 信息提示。还有在windows系统下.cnf 默认会被当成快捷方式,看不到扩展名。)

  在DOS命令下进入bin目录,执行命令行 

  命令:openssl genrsa 1024 > server.key

  说明:这是用128位rsa算法生成密钥,得到server.key文件 > 是输出文件的标识符

这种生成方法生成的是没有密钥的私钥文件,当然,Apache提供了加入密钥(Password)的命令,就是加入参数-des3,全部的命令为:

命令:openssl genrsa 1024 -des3 > server.key

  使用 openssl genrsa -des3 > 1024 server.key生成私钥文件是需要输入密钥的,运行的时候会让你输入并确认你的密钥,但是在Windows环境下会导致以下错误: 

 错误:Apache启动失败,错误提示是:Init: SSLPassPhraseDialog builtin is not supported on Win32 (key file .....) 

  原因是window下的apache不支持加密的私钥文件。可不使用des3加密。 

 注:生成的证书中RSA密钥对的默认长度是1024,取值是2的整数次方。建议使用4096以上。

图解:

1.切换到bin目录

2.设置环境变量3.生成server.key

  2). 生成未签署的server.csr 

  进入bin目录,执行命令行 

  命令:openssl req -new -key server.key > server.csr

说明:这是用步骤1的密钥生成证书请求文件server.csr, 这一步会有很多参数,需要一一输入

 按提示输入一系列的参数, 

Country Name (2 letter code) [AU]:CN ISO国家代码(只支持两位字符)

State or Province Name (full name) [Some-State]:ZJ所在省份

Locality Name (eg, city) []:HZ所在城市

Organization Name (eg, company):SW_TECH公司名称

Organizational Unit Name (eg, section) []:SW_TECH组织名称

Common Name (eg, YOUR name) []:kedou.com申请证书的域名

Email Address []:admin@admin.com 管理员邮箱

Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []: 交换密钥

An optional company name []:  注:Common Name必须和httpd.conf中server name必须一致,否则apache不能启动 (启动apache时错误提示为:RSA server certificate CommonName (CN) `Kedou' does NOT match server name!? )  

3). 签署服务器证书文件server.crt 

  进入bin目录,执行命令行 

命令:openssl req -x509 -days 365 -key server.key -in server.csr > server.crt

说明:这是用步骤1,2的的密钥和证书请求生成证书server.crt,-days参数指明证书有效期,单位为天,x509表示生成的为X.509证书。

  

  以上签署证书仅仅做测试用,真正运行的时候,应该将CSR发送到一个CA返回真正的用书.网上有些文档描述生成证书文件的过程比较繁琐,就是因为 

  他们自己建立了一个CA中心证书,然后再签署server.csr. 

  用openssl x509 -noout -text -in server.crt可以查看证书的内容。证书实际上包含了Public Key.

图解:

  生成CSR生成CRT

3. 配置httpd.conf. 

在conf目录下的httpd_ssl.conf文件是关于ssl的配置,是httpd.conf的一部分,在 httpd.conf中找到给文件的引用,移除对应的注释

找到一个443的虚拟主机配置项,如下: 

   SSLEngine On 

   SSLCertificateFile ../bin。dourl.cnf/server.crt 

   SSLCertificateKeyFile ../bin。dourl.cnf/server.key 

   #SSLCertificateChainFile ../bin。dourl.cnf//ca.crt // 暂未启用 

   #...... 

   DocumentRoot "D:/programs/Apache2.2/htdocs" 

   ServerName www.kedou.com:443 

移除注释行 

    LoadModule ssl_module modules/mod_ssl.so

这样所有的都可以通过HTTPS访问了,但是如果你想保留其他目录的访问仍然是http,那么你应该把 

     也改为

     此时,即便ServerName是任意的,系统仍然正常运行,仅仅Apache log提示"does NOT match server name" 

注意到ssl.conf的配置都在标签中,所以为了使IfDefine 指令有效,运行apache 的时候要加上 -D SSL 参数。

apache -D SSL -k start 下载本文

显示全文
专题