HTTPS服务器搭建
1前言
本文档描述了利用Apache和OpenSSL搭建HTTPS服务器的流程。
搭建环境:
1)操作系统:Win7_64位
2)Perl版本:Perl_V5.24.0
3)MS SDK:Visual Studio 2015
4)Apache版本:Apache_V2.2.25
5)OpenSSL版本:OpenSSL_V0.9.8
2安装和配置过程
2.1安装Perl
双击ActivePerl-5.24.0.2400-MSWin32-x64-300558.exe进行安装,安装过程采用默认设置。
若PC已安装Perl5,此步骤可以省略。
2.2安装 Visual Stdio
双击vs_community__340839533.1480386567.exe进行安装,安装过程采用默认设置。
若PC已安装Visual Stdio,此步骤可省略。
2.3安装 Apache+OpenSSL0.9.8
双击httpd-2.2.25-win32-x86-openssl-0.9.8y.msi进行安装。
安装过程中注意事项:
1)将安装路径修改为 C:\Apache2.2\,如下图所示。
2)注意的就是正确设置Network Domain和Server Name这两项。如果想远程也能访问,这里就填本机ip地址;如果只想本地测试,那么就填localhost或内网IP (如192.168.1.105)。
安装完成后会生成以下文件:
1)Apache配置文件
C:/Apache2.2/conf/httpd.conf
C:/Apache2.2/conf/extra/httpd-ssl.conf
2)SSL相关的文件
C:/Apache2.2/modules/ mod_ssl.so
C:/Apache2.2/bin/ openssl.exe
C:/Apache2.2/bin/libeay32.dll
C:/Apache2.2/bin/ssleay32.dll
C:/Apache2.2/conf/ https://www.doczj.com/doc/6810542637.html,f
图 2.1 修改Apache安装路径
2.4设置HTTPS访问的根目录
用文本编辑器(记事本或NotePad++等)打开C:/Apache2.2/conf/httpd.conf,修改DocumentRoot、ServerName和Directory(如图2.2和图2.3所示)。
注:DocumentRoot设置的目录即客户端在访问该服务器时的文件根目录,后面的
图 2.2 修改DocumentRoot和ServerName
图 2.3 设置
2.5生成SSL证书
1)打开cmd, cd到apache安装目录的bin目录,运行openssl命令:
openssl req -config ..\conf\https://www.doczj.com/doc/6810542637.html,f -new -out my-server.c sr
运行该命令后会提示输入密码、Province Name、Common Name等,如图2.4所示。
注:
(1)“my-server“是自己取的名字,可以换成其他的,但后面设置中使用的名字必须与此保持一致。
(2)设置的密码很重要,必须记住!后面的设置过程中还会用到该密码的。
(3)提示输入“Common Name”,填本机IP地址
2)运行OpenSSL命令:
openssl rsa -in privkey.pem -out my-server.key
运行后会提示输入密码,输入1)中设置的密码即可。
3)运行OpenSSL命令:
openssl x509 -in my-server.csr -out my-server.crt -req -signkey my-server.key -days 4000
该命令将会生成一个有效期为4000天的证书
4)运行OpenSSL命令:
openssl x509 -in my-server.crt -out my-server.der.crt -outform DER
5)运行完以上命令后,会在当前目录(即C:/Apache2.2/bin/)生成以下5个文件:
privkey.pem、my-server.der.crt、my-server.csr、my-server.key和my-server.cert
将以上文件剪切到C:/Apache2.2/conf/ssl/目录下。
注:当服务器IP地址发生改变了,需重新执行上述过程,重新生成证书。
2.6设置Apache支持OpenSSL
1)修改C:/Apache2.2/conf/ httpd.conf
将LoadModule ssl_module modules/mod_ssl.so和Include conf/extra/httpd-ssl.conf前的注释符删掉。
2)修改C:/Apache2.2/conf/extra/httpd-ssl.conf,增加HTTPS访问权限将以下三行用#注释掉:
SSLOptions +StdEnvVars
增加以下行:
SSLOptions +StdEnvVars
Options +Indexes FollowSymLinks +ExecCGI
AllowOverride AuthConfig FileInfo
Order allow,deny
Allow from all
如图2.4所示。
图 2.4 修改httpd-ssl.conf
2.7修改证书和密钥文件路径
修改C:/Apache2.2/conf/extra/httpd-ssl.conf文件中SSLCertificateFile和SSLCertificateKeyFile的值,分别改为证书和私钥的文
件位置,即:
SSLCertificateFile "C:/Apache2.2/conf/ssl/my-server.crt"
SSLCertificateKeyFile "C:/Apache2.2/conf/ssl/my-server.key"
如图2.5所示。
图 2.5 修改证书和私钥的文件路径
3测试服务器
1)在开始菜单中运行Apache的Test Configuration工具, 检查设置文件是否正确
2)重新启动Apache 2.2.x
3)顺利启动之后, 在浏览器中输入 https://localhost 看看是否可以访问, 如果可以访问, 则设置成功!
若弹出以下提示界面(如图3.1),说明SSL证书未加载。
图 3.1 未加载SSL证书提示
4)加载SSL证书
打开IE浏览器的Internet选项,依次点击“内容”->“证书”,如图3.2所示。
图3.2 打开IE浏览器的证书选项
在弹出的“证书”窗口中,分别点击进入“受信任的根证书颁发机构”和“受信任的发布者”,并点击“导入(I...)”,导入前面生成的my-server.der.crt文件(C:/Apache2.2/conf/ssl/my-server.der.crt)。
图 3.3 IE浏览器导入SSL证书
完成以上证书的导入后,重新打开浏览器即可正常访问https://localhost。