制作证书:

参考:linux下运用opensll制作ssl证书

生成三个证书 server.crt 、server-ca.crt、server.key

安装openssl

tar -xzvf openssl-1.0.2h.tar.gz
cd openssl-1.0.2h
./config -fPIC enable-shared
make depend
make && make install
make clean && make distclean

#openssl类库做软连接
ln -s /usr/local/ssl//lib/*.so.* /usr/lib64
ln -s /usr/local/ssl//lib/*.so.* /usr/lib
安装apache

apache依赖包安装不详细说明,

tar xvzf httpd-2.4.18.tar.gz
cd httpd-2.4.18
./configure \
--prefix=/usr/local/cp-httpd-2.4.18 \
--with-apr=/usr/local/cp-apr-1.5.2 \
--with-apr-util=/usr/local/cp-apr-util-1.5.4 \
--with-apr-iconv=/usr/local/cp-apr-iconv-1.2.1 \
--with-ssl=/usr/local/ssl \
--enable-so \
--enable-ssl \
--enable-mods-shared=all \
--enable-cache \
--enable-disk-cache \
--enable-file-cache \
--enable-mem-cache
make && make install
make clean && make distclean
配置apache的ssl

httpd.conf中配置

#启用ssl模块
sed -i 's:#LoadModule ssl_module modules/mod_ssl.so:LoadModule ssl_module modules/mod_ssl.so:' /usr/local/httpd/conf/httpd.conf
sed -i 's:#LoadModule socache_shmcb_module modules/mod_socache_shmcb.so:LoadModule socache_shmcb_module modules/mod_socache_shmcb.so:' /usr/local/httpd/conf/httpd.conf
sed -i 's:#Include conf/extra/httpd-ssl.conf:Include conf/extra/httpd-ssl.conf:' /usr/local/httpd/conf/httpd.conf
httpd-ssl.conf配置
sed -i 's:#SSLCertificateChainFile "/usr/local/httpd/conf/server-ca.crt":SSLCertificateChainFile "/usr/local/httpd/conf/server-ca.crt":' /usr/local/httpd/conf/extra/httpd-ssl.conf
拷贝server.crt 、server-ca.crt、server.key到/usr/local/httpd/conf目录下
apache结合openssl安装过程中出现的错误

1、apache错误提示libz.a: could not read symbols: Bad value”
                   重新安装openssl 加上-fPIC和enable-shared参数
./config -fPIC --prefix=/usr/local/openssl1.0.1 enable-shared
2、apache的httpd.conf缺乏LoadModule ssl_module modules/mod_ssl.so解决方法
                  原因是上一次编译的缓存存,需要清除掉才能重新生成执行

make clean && make distclean

3、httpd: Syntax error on line 129 of /usr/local/cp-httpd-2.4.18/conf/httpd.conf: Cannot load modules/mod_ssl.so into server: libssl.so.1.0.0: cannot open shared object file: No such file or directory
ln -s /usr/local/ssl/lib/*.so /usr/lib64
ln -s /usr/local/ssl//lib/*.so.* /usr/lib
                  这个问题比较奇怪,命名在httpd安装中指定了--enable-ssl和--with-ssl=/usr/local/openssl/还是无法生效,httpd只在/usr/lib64查找libssl.so.1.0.0,因此需要做个软连接处理。

配置rewrite规则实现访问http自动跳转到https

实现方法是定义一个.htaccess放在httdocs中,内容为:

<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On

RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]

ErrorDocument 404 /404.html
ErrorDocument 403 /404.html
</IfModule>
特别说明:

apache重新编译不会覆盖原有的httpd.conf文件,因此如果原有没有编译ssl的话,httpd.conf中必须手工加上mod_ssl.so模块配置

最新文章

  1. 004医疗项目-逆向工程-pojo类的创建和对应xml的生成
  2. 2016 版 Laravel 系列入门教程(五)【最适合中国人的 Laravel 教程】
  3. 测序深度和覆盖度(Sequencing depth and coverage)
  4. gzip命令
  5. bzoj 2049 Cave 洞穴勘测(LCT)
  6. mssql update from
  7. Python 数据挖掘 工具包整理
  8. Flink Event Time Processing and Watermarks(文末有翻译)
  9. xshell连接虚拟机ubuntu
  10. hbuilder真机调试时,手机端无法连接电脑测试的处理办法
  11. Spring AOP 自动创建代理
  12. LeetCode 896 Monotonic Array 解题报告
  13. day05-if-else语句
  14. select as table
  15. js ajax 数据获取
  16. Executor框架(四)周期/延时任务ScheduleThreadPoolExecutor
  17. iOS开发学习-NSUserDefaults的介绍和用法
  18. 小课堂week16 编程范式巡礼第一季 三大基石
  19. 简单HttpClientUtils工具类
  20. 2018-12-25 课堂笔记&amp;面试题

热门文章

  1. 大数据技术之Hadoop3.1.2版本HA模式
  2. 高并发下redis
  3. 利用 Create React Native App 创建 React Native 应用
  4. 如何使用Arduino和SIM900A GPRS / GSM模块将数据发送到Web服务器
  5. 生成1~n的排列(模板),生成可重集的排列(对应紫书P184, P185)
  6. linux文档与目录结构
  7. SQL 必知必会笔记--完整介绍sql技巧
  8. 远程连接Linux mysql报错:Access denied for user ‘root’@‘localhost’(using password: YES)的解决方法
  9. Selenium常用API的使用java语言之20-获取窗口截图
  10. bzoj 2480——扩展BSGS