apache 虚拟主机启用SSL

以下前半部转自:http://www.chinaunix.net/jh/4/479635.html 作者wingger

后面根据实际情况写了我自己配的操作!

 

本文章在LINUX9+apache2.0.52,tomcat5.5.6,j2se1.5,openssl0.97上实验通证
本文的目的是为了交流,如有出错的地方,请指教
转载请注明出处,并保持文章的完整性
现在开始安装

首先在安装之前要明白一些基本概念

1、SSL所使用的证书可以是自己建的生成的,也可以通过一个商业性CA如Verisign 或 Thawte签署证书。


2、证书的概念:首先要有一个根证书,然后用根证书来签发服务器证书和客户证书,一般理解:服务器证书和客户证书是平级关系。在SSL必须安装根证书和服务器证书来认证。

因此:在此环境中,至少必须有三个证书:即根证书,服务器证书,客户端证书
在生成证书之前,一般会有一个私钥,同时用私钥生成证书请求,再利用证书服务器的根证来签发证书。

3、签发证书的问题:我最近找了很多关于openssl的资料,基本上只生成了根证书和私钥及服务器证书请求,并没有真正的实现签证。我这里参考了一些资料,用openssl自带的一个CA.sh来签证书,而不是用MOD_ssl里的sign.sh来签。

用openssl语法来生成证书,有很多条件限定,如目录,key的位置等,比较麻烦,我实验了好几天,最后放弃了。有兴趣的可以参考一下openssl手册。


步骤一:安装openssl和apache
1、到www.openssl.org下载openssl-0.9.7e.tar.gz(目前最新版)
2、卸载掉老的opensll库 

#rpm –e –-nodeps openssl 

 
3、解压:

#tar xzvf openssl-0.9.7e.tar.gz


4、进入openssl目录,并安装,用--prefix指定openssl安装目录

#cd openssl-0.9.7e

#./config --prefix=/usr/local/openssl
#make
#make test
#make install 



5、安装apache
至www.apache.org/dist下载apache最新版httpd-2.0.52.tar.gz
解压后进入apache目录,根据需要安装需要的模块,我这里装了ssl,rewrite,动态模式安装

#tar zxvf httpd-2.0.52.tar.gz

#cd httpd-2.0.52
#./configure  --prefix=PREFIX   --enable-ssl   --enable-rewrite  --enable-so   --with-ssl=/usr/local/openssl
#make
#make install



步骤二:签证
安装openssl后,在openssl下有一个CA.sh文件,就是利用此文件来签证,
来签三张证书,然后利用这三张证书来布SSL服务器。

1、在/usr/local/apache/conf下,建立一个ssl.crt目录,将CA.sh文件copy至/usr/local/apache/conf/ssl.crt/目录

[root@win ssl]# cp /usr/local/openssl/ssl/misc/CA.sh /usr/local/apache/conf/ssl.crt/CA.sh



2、运行CA.sh -newca,他会找你要CA需要的一个CA自己的私有密钥密码文件。如果没有这个文件?按回车会自动创建,输入密码来保护这个密码文件。之后会要你的一个公司信息来做CA.crt文件。最后在当前目录下多了一个./demoCA这样的目录../demoCA/private/cakey.pem就是CA的key文件啦,./demoCA/cacert.pem就是CA的crt文件了

[root@win ssl.crt]# ./CA.sh -newca



要求输入如下信息:
引用:Country Name (2 letter code) [GB]:CN
State or Province Name (full name) [Berkshire]:FUJIAN
Locality Name (eg, city) [Newbury]:FUZHOU
Organization Name (eg, company) [My Company Ltd]:FJJM
Organizational Unit Name (eg, section) []:FD
Common Name (eg, your name or your server's hostname) []:WIN
Email Address []:WIN@WIN.COM


这样就建好了一个CA服务器,有了一个根证书的私钥cakey.pem及一张根证书cacert.pem,现在就可以cacert.pem来给签证了

3、签署服务器证书
生成服务器私钥:

[root@win ssl.crt]# openssl genrsa -des3 -out server.key 1024


生成服务器证书请求

[root@win ssl.crt]# openssl req -new -key server.key -out server.csr


会要求输入信息

Country Name (2 letter code) [GB]:CN

State or Province Name (full name) [Berkshire]:FUJIAN
Locality Name (eg, city) [Newbury]:FUZHOU
Organization Name (eg, company) [My Company Ltd]:FJJM
Organizational Unit Name (eg, section) []:FD
Common Name (eg, your name or your server's hostname) []:WIN
Email Address []:WIN@WIN.COM
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:WIN
An optional company name []:WING



最后把server.crt文件mv成newreq.pem,然后用CA.sh来签证就可以了

[root@win ssl.crt]# mv server.csr newreq.pem

[root@win ssl.crt]# ./CA.sh -sign

这样就生成了server的证书newcert.pem
把newcert.pem改名成server.crt

[root@win ssl.crt]# mv newcert.pem server.crt




4、处理客户端:
生成客户私钥:

[root@win ssl.crt]# openssl genrsa -des3 -out client.key 1024


请求

[root@win ssl.crt]# openssl req -new -key client.key -out client.csr


签证:

[root@win ssl.crt]# openssl ca -in client.csr -out client.crt


把证书格式转换成pkcs12格式

[root@win ssl.crt]# openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.pfx



5、这时就有了三张证书和三个私钥,一个是demoCA下的根证书,ssl.crt下的服务器证书和客户证书。及demoCA/private下的根key,ssl.crt下的服务器key和客户key,在conf下的ssl.conf下指定证书的位置和服务器key的位置.

我是在conf下建立一个ssl.crt目录,并将所有的key和证书放到这里

#cp demoCA/cacert.pem cacert.pem


同时复制一份证书,更名为ca.crt

#cp cacert.pem ca.crt




=============================================以下几步我的与原文章作者不太样,这是原作者的:
步骤三、编辑ssl.conf

#cd /usr/local/apache/conf


编辑ssl.conf

指定服务器证书位置

SSLCertificateFile /usr/local/apache/conf/ssl.crt/server.crt
指定服务器证书key位置
SSLCertificateKeyFile /usr/local/apache/conf/ssl.crt/server.key
证书目录
SSLCACertificatePath /usr/local/apache/conf/ssl.crt
根证书位置
SSLCACertificateFile /usr/local/apache/conf/ssl.crt/cacert.pem
开启客户端SSL请求
SSLVerifyClient require
SSLVerifyDepth  1



启动ssl

/usr/local/apache/bin/apachectl startssl

会要求输入server.key的密码
启动,这样一个默认的SSL服务器及http服务器就启动了,

步骤四、安装和使用证书
把刚才生成的证书:根证书ca.crt和客户证书client.pfx下到客户端,并安装,
ca.crt安装到信任的机构,client.pfx直接在windows安装或安装到个人证书位置,然后用IP访问HTTP和https服务器。

 

=================================以下是我实际操作的

 

打开/usr/local/apache/conf/httpd.conf

加上:

 

Include conf/extra/httpd-ssl.conf

或把这行的前面的注释去掉

 

保存,

 

再打开/usr/local/apache/conf/extra/httpd-ssl.conf

留下以下几行,其它的全部注释或删除

 

Listen 443
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl    .crl
SSLPassPhraseDialog  builtin
SSLSessionCache        "shmcb:/usr/local/apache/logs/ssl_scache(512000)"
SSLSessionCacheTimeout  300
SSLMutex  "file:/usr/local/apache/logs/ssl_mutex"

当然如果把SSL的虑拟主机放在这个文件里那就把下面的放到这个文件也行,

 

打开/usr/local/aapche/conf/extra/httpd-vhost.conv

 

把需要启用SSL的虑拟主机配置如下:

 

<VirtualHost *:443>
    ServerAdmin admin@server.com
    DocumentRoot "/var/www"
    ServerName www.server.com:443
    ErrorLog "/var/logs/www-error_log"
    TransferLog "/var/logs/www-access_log"
    SSLEngine on
    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL

    SSLCertificateFile "/usr/local/apache/conf/ssl.crt/server.crt"
    SSLCertificateKeyFile "/usr/local/apache/conf/ssl.crt/server.key"

    <FilesMatch "/.(cgi|shtml|phtml|php)$">
        SSLOptions +StdEnvVars
    </FilesMatch>
    BrowserMatch ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
    CustomLog "/var/logs/www-ssl_request_log" "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x /"%r/" %b"


</VirtualHost>

这样重启apache访问网站时用https://www.server.com就可以了,但会提示证书不受信任,呵呵,因为是个人制作的证书,不是所谓的权威机构弄的,所以不受信任,可以手动加为受信任就可以了

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是在Apache 2.4.6上部署SSL证书的步骤: 1. 获取SSL证书文件 你可以从证书颁发机构(CA)或自行签名的证书中获取SSL证书文件。通常,这个文件包括以下内容: - 证书文件(.crt) - 私钥文件(.key) - 中间证书文件(.ca-bundle) 确保你拥有这些文件,并将它们保存在一个安全的地方。 2. 配置Apache 在配置文件中启用SSL模块。在CentOS中,配置文件通常位于`/etc/httpd/conf/httpd.conf`或`/etc/httpd/conf.d/ssl.conf`。在Ubuntu中,通常位于`/etc/apache2/sites-available/default-ssl.conf`。 在配置文件中找到以下语句,并启用它们: ``` LoadModule ssl_module modules/mod_ssl.so ``` 3. 配置虚拟主机 在配置文件中找到要启用SSL虚拟主机,并添加以下配置: ``` <VirtualHost *:443> ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/html SSLEngine on SSLCertificateFile /path/to/cert.pem SSLCertificateKeyFile /path/to/key.pem SSLCACertificateFile /path/to/ca-bundle.pem </VirtualHost> ``` 在这个示例中,`example.com`和`www.example.com`是你的网站域名,`/var/www/html`是你的网站根目录。`/path/to/cert.pem`是你的证书文件,`/path/to/key.pem`是你的私钥文件,`/path/to/ca-bundle.pem`是你的中间证书文件。 4. 重启Apache 完成上述步骤后,保存配置文件,并重新启动Apache: ``` sudo systemctl restart httpd.service # CentOS sudo systemctl restart apache2.service # Ubuntu ``` 现在你的网站应该已经启用SSL证书。你可以在浏览器中输入你的网站地址来验证证书是否已正确部署。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值