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

[经验分享] Linux下完整编译Apache+OpenSSL实现HTTPS

[复制链接]

尚未签到

发表于 2018-11-19 06:57:45 | 显示全部楼层 |阅读模式
  为了使Apache支持https访问,系统需要安有apache、openssl、mod_ssl.so
  

  1、安装openssl
  yum install -y openssl openssl-devel
  

  2、apache下载地址,安装mod_ssl.so
  wget http://www.lishiming.net/data/attachment/forum/httpd-2.2.24.tar.bz2
  tar -jxf apache-2.2.24.tar.bz2
  cd apache-2.2.24
  

  ./configure --prefix=/usr/local/apache2.2.24 --enable-so --enable-rewrite=shared --enable-cgi --enable-pcre --enable-ssl=shared --enable-mods-shared=all --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/
  

  注:
  --enable-so    #支持动态共享模块,如果没有此功能,php 无法与 apache 一起工作,必须安装
  --enable-rewrite    #支持 url 重写
  --enable-cgi    #支持 cgi
  --enable-pcre    #支持pcre
  --enable-ssl    #启用 ssl 功能,不安装无法启用 https
  --enable-mods-shared=all    #编译所有模块
  --with-apr=/usr/local/apr    #指定apr库文件路径
  --with-apr-util=/usr/local/apr-util/    #指定apr-util库文件路径
  --with-mpm=worker    #指定apache工作模式
  参加后面加上shared开启所有的共享(动态)编译模式,如果不加shared,则为静态编译模式
  

  注意:mpm_开头的就是apache的mp工作模式,2.2版本的httpd默认的mpm工作模式为prefork。除了prefork外,常见的工作模式还有worker以及event。2.4版本的httpd默认是event工作模式。关于这几种工作模式的区别,可以参考一下 http://www.cnblogs.com/fnng/archive/2012/11/20/2779977.html

  

  3、复制/usr/local/apache2.2.24/bin/apachectl到/etc/init.d/
  cp -vRp /usr/local/apache2.2.24/bin/apachectl /etc/init.d/httpd
  chmod +x /etc/init.d/httpd
  执行以下sed命令,直接修改/etc/init.d/httpd启动文件
  sed -i '2s/\#/\#chkconfig\:2345 10 90/g' /etc/init.d/httpd
  sed -i '2 a \#description\:Activates\/DeactivatesApache Web Server' /etc/init.d/httpd
  chkconfig --add httpd    添加服务
  chkconfig --level 2345 httpd on    开机自启动
  

  4、修改httpd.conf配置文件

  添加一行:ServerName localhost:80
  

  执行以下命令,检查httpd.conf配置文件是否有错误
  /usr/local/apache2.2.24/bin/apachectl -t
  

  执行以下命令,检查apache编译后加载的模块
  /usr/local/apache2.2.24/bin/apachectl -M
  ssl_mod(shared)    为共享(动态)模块
  ssl_mod(static)    为静态模块,不共享
  

  5、启动apache服务
  service httpd start
  
  /etc/init.d/httpd start
  
  /usr/local/apache2.2.24/bin/apachectl start
  

  netstat -lnapt |grep httpd    查看apache服务是否启动
  

  以上的操作,只是开启了apache的80端口,以下操作为apache支持https访问(443)端口
  6、生成密钥和证书

  直接进入到Apache安装目录下的conf目录;
  建立三个文件(不然为网站服务器签署证书时候会报错):
  mkdir newcerts
  echo "01" > serial
  touch index.txt
  建立服务器密钥:
  可以通过 openssl --help    查看命令的帮助
  openssl genrsa -des3 1024 > server.key

  输入口令:******
  确定口令:******
  从密钥中删除密码(以避免系统启动后被询问口令):
  openssl rsa -in server.key > server2.key

  输入server.key口令:******
  替换文件:

  mv server2.key server.key
  建立服务器密钥请求文件:
  openssl req -new -key server.key -out server.csr
  建立服务器证书:
  openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 365
  

  7、Apache添加SSL支持

  打开apache安装目录下conf目录中的httpd.conf文件,找到   
#LoadModule ssl_module modules/mod_ssl.so   
#Include conf/extra/httpd_ssl.conf   
删除行首的配置语句注释符号“#”  
  打开apache安装目录下conf/extra目录中的httpd-ssl.conf文件   
在配置文件中查找以下配置语句   
SSLCertificateFile conf/ssl.crt/server.crt         将服务器证书配置到该路径下   
SSLCertificateKeyFile conf/ssl.key/server.key    将服务器证书私钥配置到该路径下

  

  8、打开apache安装目录下conf/extra目录中的httpd-ssl.conf文件
  修改端口 Listen 443
  DocumentRoot "/usr/local/apache2/htdocs"    ssl的访问站点要跟http访问的站点目录要一致,否则https访问失败
  打开apache安装目录下conf目录中的httpd.conf文件
  DocumentRoot "/usr/local/apache2/htdocs"
  

  9、重启apache服务
  10、输入https://ip/网站进行验证,则表示已经支持ssl




运维网声明 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-636710-1-1.html 上篇帖子: Apache和Nginx WEB原理 下篇帖子: 安装openstack时apache无法启动
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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