设为首页 收藏本站
查看: 1414|回复: 6

[经验分享] 为apache添加SSL支持

[复制链接]

尚未签到

发表于 2013-3-26 09:10:08 | 显示全部楼层 |阅读模式

为Apache添加SSL模块

一、相关知识介绍:

有时候在使用一个WEB应用的时候,为了让HTTP的传输更加的安全,那就要用到SSL(Security Socket Layer  安全套接层)协议,也就是用HTTPS来访问。

在介绍之前来简单的说说对称加密和非对称加密:

对称加密:在对称加密算法中,加密的双方都持有一个相同的密钥,用这个密钥来加密和解密。由于在加密和解密的过程中使用同一种密钥,所以称其为对称加密算法。

非对称加密:在非对称加密算法中,引进了公钥和私钥这两个概念。公钥:就是大家都知道的,可以加密,也可以解密。私钥:只有私钥持有人才知道的,不能公布于从的一个密钥。公钥和私钥是成对出现的,单独的一个是没有任何意义的,而且不能由一个摧算出另一个。用公钥加密的数据可以用私钥来解密,这就实现了数据的加密;同样用私钥加密的数据,也只有用公钥才能解密,这实现了身份验证。

HTTPS的原理大致是这样的:客户端在通过https访问网站的时候,WEB服务器会给客户机自己的公钥(也就是下面要说的server.crt),然后客户机就会随机的产生一个对称的密钥,之后,再用刚才这个公钥来给对称密钥来加密,最后,再把这个加了密的对称密钥发给服务器,服务器在接收到这个加密了的对称密钥后,用自己的私钥来解密,这样服务器也得到了这个对称密钥。当客户机有请求要发给服务器的时候,或是服务器在给客户机发数据的时候,都用这个对称密钥来加密所传输的数据。这样安全性就大提高了。如下图所示:


234103914.jpg


由上可以看出,HTTPS中先是使用非对称加密算法,把对称的密钥给传到服务器端,然后再用这个对称的密钥来对要传输的数据进行加密的!

二、安装Apache并让其支持SSL,在安装之前还是要把apr和apr-util这两个给安装上:

         1、安装apr:

                   # ./configure –prefix=/usr/local/apr

                   # make && make install

         2、安装apr-util:

                   # ./configure –prefix=/usr/local/apr-util –with-apr=/usr/local/apr/

                   # make && make install

         3、安装apache:

         #       ./configure –prefix=/usr/local/apache –enable-modules=most –enable-mods-shared=all –with-apr=/usr/local/apr/ --with-apr-util=/usr/local/apr-util/

         # make && make install

注:这里的—enable-modules=most 是将大部分的模块静态的编译到httpd二进制文件中,

--enable-mods-shared=all 是让apache动态的加载所有的模块,如果去掉shared的话,那就是静态加载所有的模块。

当然你不用这两个参数也可以,用—enable-ssl,但是这样做的话,如果以后要添加新的模块的话,有点麻烦。

         4、安装oenssl:

                   openssl众多的密码算法、公钥基础设施标准以及SSL协议。更多的信息请百度,这写不下了。

# ./config            //注意看清楚哦,这里是config不是configure

# make && make install

三、为服务器生成私钥(server.key)和公钥(server.crt):

1、用openssl命令为服务器生成server.key私钥:

                  [iyunv@ns openssl-1.0.0e]# cd /usr/local/ssl/bin/

                  [iyunv@ns bin]# ./openssl  genrsa  -des3  -out  server.key

                  Generating RSA private key, 512 bit long modulus

                  .....++++++++++++

                  ....++++++++++++

                  e is 65537 (0x10001)

                  Enter pass phrase for server.key:

                  Verifying - Enter pass phrase for server.key:

                  [iyunv@ns bin]#

                  注:这里的默认长度是512位的密码,自己还可以在后面加上个长度如1024,并且最后还会让你输入一个私钥的保护密码。防止私钥被盗后,被人乱用。


2、用刚才的私钥给服务器生成一个证书申请文件server.csr:

                  [iyunv@ns bin]# ./openssl  req  -new  -key  server.key  -out  server.csr

                  Enter pass phrase for 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   //输入国家代码中国CN

                  State or Province Name (full name) [Some-State]:SHANGHAI         //省份名称

                  Locality Name (eg, city) []:SHANGHAI              //城市名称

                  Organization Name (eg, company) [Internet Widgits Pty Ltd]:.      //组织名称,也可填公司名,我这没有填。

                  Organizational Unit Name (eg, section) []:xfzhou.com            //单位名称,

                  Common Name (eg, YOUR name) []:xfzhou.com    //这个填的要与ServerName一样

                  Email Address []:admin@xfzhou.com     //联系的邮件地址

                  Please enter the following 'extra' attributes

                  to be sent with your certificate request

                  A challenge password []:123456     //这个密码有人说不填,但是,我这填了也没有用到。

                  An optional company name []:xfzhou.com      //还是公司名称。

                  [iyunv@ns bin]#

        

3、用前面两步生成的私钥(server.key)文件和证书申请文件(server.csr)来给服务器申请证书:

                  [iyunv@ns bin]# ./openssl x509 -req -days 3650 -in server.csr -signkey server.key -out             server.crt

                  Signature ok

subject=/C=CN/ST=SHANGHAI/L=SHANGHAI/OU=xfzhou.com/CN=xfzhou.com/emailAddress=admin@xfzhou.com

                  Getting Private key

                  Enter pass phrase for server.key:             //输入私钥的保护密码

                  [iyunv@ns bin]# ls

                  c_rehash  openssl  server.crt  server.csr  server.key

                  [iyunv@ns bin]#

4、再把上面生成的私钥文件和证书(公钥)文件CP到/usr/local/apache/conf/目录下面:

                  [iyunv@ns bin]# cp ./server.key /usr/local/apache/conf/

                  [iyunv@ns bin]# cp ./server.crt /usr/local/apache/conf/

四、修改/usr/local/apache/conf/httpd.conf,启用SSL模块,并启动HTTPD服务:

         # vi /usr/local/apache/conf/httpd.conf

         LoadModule socache_shmcb_module modules/mod_socache_shmcb.so //这个模块也要加载,否则启动不了。

         LoadModule ssl_module modules/mod_ssl.so

         Include conf/extra/httpd-ssl.conf  //找到这三行然后把注释给去掉。

         [iyunv@ns bin]# /usr/local/apache/bin/apachectl start

         Apache/2.4.3 mod_ssl (Pass Phrase Dialog)

         Some of your private key files are encrypted for security reasons.

         In order to read them you have to provide the pass phrases.

         Server www.example.com:443 (RSA)

         Enter pass phrase:  //这里输入的是那个第一次创建的那server.key的密码。

         OK: Pass Phrase Dialog successful.

         [iyunv@ns bin]# netstat -anpt| grep httpd

         tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      14242/httpd        

         tcp        0      0 0.0.0.0:443                 0.0.0.0:*                   LISTEN      14242/httpd        

         [iyunv@ns bin]#

若你的某个web服务器上运行了多个网站,某个网站比如说后台管理的网站可能需要htts加密传输,但是前台的不需要,如果遇到这样的问题,你就可以把你的网站的后台管理的页面用HTTPS来访问,具体做法是把网站的后台管理的根目录放到httpd-ssl.conf文件中的虚拟主机中。

五、验证:

1、在浏览器中直接输入http://192.168.10.100发现是可以访问的如下图:


234146696.jpg

2、用https://192.168.10.100访问的时候如下,会出现证书错误的警告:


234203898.jpg


点击继续浏览,就可以看到网站的内容了,如下:

234219312.jpg

再点击下“证书错误”——“查看证书”就可以看到证书了。如下:

234242522.jpg

发现一个问题,就是在启动apache的时候每次都会让你输入密码,这样会很麻烦的,要是你的服务器重启了,那么你就必须要手工输入密码你的网站才会起来。。

下面给出了一个解决办法:

在/usr/local/apache/conf/目录下创建一个sendsslpwd的文件。内容如下:

[iyunv@ns conf]# cat sendsslpwd

#!/bin/bash

sslpwd='xfzhou'                 //这个就是私钥的保护密码

echo $sslpwd

[iyunv@ns conf]#

再来修改下httpd-ssl.conf这个文件:

找到 SSLPassPhraseDialog builtin 这一行,将其注释掉

加入 SSLPassPhraseDialog exec:/usr/local/apache2/conf/sendsslpwd

这样,每次启动将不会提示输入SSL密码了如下:

[iyunv@ns conf]#

[iyunv@ns conf]# /usr/local/apache/bin/apachectl stop

[iyunv@ns conf]# /usr/local/apache/bin/apachectl start

[iyunv@ns conf]#

还有一种解决办法就是执行下面的这个命令:

# openssl  rsa -in server.key -out server.key

然后再输入一次密码,接下来你再重启服务的时候就不会让你手工输入密码了!



运维网声明 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-4367-1-1.html 上篇帖子: 如何在redhat5.4上面安装2.4.4版本的apache服务器 下篇帖子: RedHat Enterprise Linux 5 下搭建LAMP(python) 全过程分享 apache

尚未签到

发表于 2013-3-26 09:18:26 | 显示全部楼层

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

尚未签到

发表于 2013-5-16 11:53:18 | 显示全部楼层
学习了,不错,讲的太有道理了

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

尚未签到

发表于 2013-5-17 19:01:19 | 显示全部楼层
女,喜甜食,甚胖!该女有一癖好:痛恨蚂蚁,见必杀之。问其故曰:这小东西,那么爱吃甜食,腰还那么细!

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

尚未签到

发表于 2013-5-19 08:50:34 | 显示全部楼层
我喜欢孩子,更喜欢造孩子的过程!

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

尚未签到

发表于 2013-5-20 16:06:50 | 显示全部楼层
解释就是掩饰,掩饰就是编故事!

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

尚未签到

发表于 2013-5-21 23:41:14 | 显示全部楼层
人生不能像做菜、把所有的料都准备好才下锅!

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

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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