设为首页 收藏本站
查看: 397|回复: 0

[经验分享] apache 虚拟主机启用SSL

[复制链接]
YunVN网友  发表于 2017-1-1 10:11:24 |阅读模式
  以下前半部转自: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–-nodepsopenssl
  
3、解压:

#tarxzvfopenssl-0.9.7e.tar.gz
  
4、进入openssl目录,并安装,用--prefix指定openssl安装目录

#cdopenssl-0.9.7e

#./config--prefix=/usr/local/openssl

#make

#maketest

#makeinstall
  

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

#tarzxvfhttpd-2.0.52.tar.gz

#cdhttpd-2.0.52

#./configure--prefix=PREFIX--enable-ssl--enable-rewrite--enable-so--with-ssl=/usr/local/openssl

#make

#makeinstall
  

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

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

[iyunv@winssl]#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文件了

[iyunv@winssl.crt]#./CA.sh-newca
  

要求输入如下信息:
引用:CountryName(2lettercode)[GB]:CN
StateorProvinceName(fullname)[Berkshire]:FUJIAN
LocalityName(eg,city)[Newbury]:FUZHOU
OrganizationName(eg,company)[MyCompanyLtd]:FJJM
OrganizationalUnitName(eg,section)[]:FD
CommonName(eg,yournameoryourserver'shostname)[]:WIN
EmailAddress[]:WIN@WIN.COM


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

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

[iyunv@winssl.crt]#opensslgenrsa-des3-outserver.key1024
  
生成服务器证书请求

[iyunv@winssl.crt]#opensslreq-new-keyserver.key-outserver.csr
  
会要求输入信息

CountryName(2lettercode)[GB]:CN

StateorProvinceName(fullname)[Berkshire]:FUJIAN

LocalityName(eg,city)[Newbury]:FUZHOU

OrganizationName(eg,company)[MyCompanyLtd]:FJJM

OrganizationalUnitName(eg,section)[]:FD

CommonName(eg,yournameoryourserver'shostname)[]:WIN

EmailAddress[]:WIN@WIN.COM

Pleaseenterthefollowing'extra'attributes

tobesentwithyourcertificaterequest

Achallengepassword[]:WIN

Anoptionalcompanyname[]:WING
  

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

[iyunv@winssl.crt]#mvserver.csrnewreq.pem

[iyunv@winssl.crt]#./CA.sh-sign
  这样就生成了server的证书newcert.pem
把newcert.pem改名成server.crt

[iyunv@winssl.crt]#mvnewcert.pemserver.crt
  


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

[iyunv@winssl.crt]#opensslgenrsa-des3-outclient.key1024
  
请求

[iyunv@winssl.crt]#opensslreq-new-keyclient.key-outclient.csr
  
签证:

[iyunv@winssl.crt]#opensslca-inclient.csr-outclient.crt
  
把证书格式转换成pkcs12格式

[iyunv@winssl.crt]#opensslpkcs12-export-clcerts-inclient.crt-inkeyclient.key-outclient.pfx
  

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

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

#cpdemoCA/cacert.pemcacert.pem
  
同时复制一份证书,更名为ca.crt

#cpcacert.pemca.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请求

SSLVerifyClientrequire

SSLVerifyDepth1
  

启动ssl

/usr/local/apache/bin/apachectlstartssl
  会要求输入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、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-322319-1-1.html 上篇帖子: 最新Apache+Tomcat集群配置 下篇帖子: Apache Commons工具集简介 .
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表