httpd实现https

一、Apache实现https

1.创建证书

(1)生成私钥

mkdir  /data

cd  /data

[root@sutang data]# openssl genrsa -des3 -out server.key 1024

Generating RSA private key, 1024 bit long modulus

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

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

e is 65537 (0x10001)

Enter pass phrase for server.key:                              

Verifying - Enter pass phrase for server.key:           

[root@sutang data]#

#des3是算法, -out [filename] 1024是长度,默认  会让你输入密码,不小于4个字符

(2)生成证书请求文件(csr)

openssl req -new -key server.key -out server.csr 执行这条命令,会出现输入国家、省等等,下面文字就是说名让你输入什么

C:Country ,单位所在国家,为两位数的国家缩写,如: CN 就是中国

ST 字段: State/Province ,单位所在州或省

L 字段: Locality ,单位所在城市 / 或县区

O 字段: Organization ,此网站的单位名称;

OU 字段: Organization Unit,下属部门名称;也常常用于显示其他证书相关信息,如证书类型,证书产品名称或身份验证类型或验证内容等;

CN 字段: Common Name ,网站的域名;

生成 csr 文件后,提供给 CA 机构,签署成功后,就会得到一個 example.crt 证书文件,SSL 证书文件获得后,就可以在 Nginx 配置文件里配置 HTTPS 了。

-new 创建一个新的证书请求文件 -key filename 指定私钥的输入文件,创建证书请求时需要 -out filename.csr 输出指定的文件名

您只要把server.csr这个档案给第三方CA(Certificate Authority)机构签署生成证书就可以了。

(3)取消私钥文件中的密码

采用DES3加密新产生的私钥server.key文件,每次要使用这个私钥时都要用输入密码。如果您的电子证书是用在apache等服务器中,您每次启动服务器时都要输入密码一次,我们可以在生成证书请求文件后,删除私钥的密码。

采用128位rsa算法生成密钥server.key文件,这种方法产生的证书在apache等服务器中启动服务器时不会要求输入密码,同时也不会把私钥加密。

cp server.key server.key.org

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

(4)签署证书请求文件并生成证书(crt)

如果要第三方签署的话,你只需要把server.csr这个档案给第三方CA(Certificate Authority)机构签署生成证书就可以了。

此处我们采取自己签署的方式。

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

Apache要使用的文件只有两个:被取消了密码的server.key、证书文件server.crt

2.添加ssl模块

Apache的源码包中自带了ssl模块,默认是不安装的。

有两种方式添加模块。

一是在备份了原有配置文件的情况下,重新编译安装软件,然后将原有配置文件替换掉新的配置文件,然后修改配置文件以支持原有模块。此种弊端在于你可能不知道哪些配置文件是修改过的。你可以直接将安装目录下的conf文件备份了。

如果make install不替换配置文件的话,你可以采用此种方式。至于make  install是否再二次编译时是否替换配置文件,我也不敢确认。

二是在源码包中重新编译,但不执行make install,然后替换掉安装目录下相关的二进制文件。此种弊端在于你很有可能不知道要替换的二进制文件在哪里,有哪些。

三是动态编译添加模块。

建议使用第三种。因为你可能不知道修改了哪些配置文件。

--------------第一种-------------------------

(1)备份原有的配置文件

[root@sutang httpd-2.2.15]# cd /usr/local/httpd/conf/

[root@sutang conf]# mkdir /httpd_bak

[root@sutang conf]# cp httpd.conf /httpd_bak/httpd.conf.bak

(2)查看原有的编译参数

如果上次安装后没有make clean的话,在安装目录下的build/config.nice中可以找到

[root@sutang bin]# cat /usr/local/httpd/build/config.nice

#! /bin/sh

#

# Created by configure

 

"./configure" \

"--prefix=/usr/local/httpd" \

"--enable-so" \

"--enable-rewriter" \

"--enable-charset-lite" \

"--enable-cgi" \

"$@"

[root@sutang bin]#

#/usr/local/httpd是httpd的安装目录

(3)在源码包重新编译

先安装添加ssl模块所需的依赖:

yum install openssl-devel

编译

./configure  --prefix=/usr/local/httpd --enable-so --enable-rewriter --enable-charset-lite --enable-cgi  --enable-ssl

安装

make  &&  make  install

(4)还原配置文件

通过覆盖的方式还原配置文件。

[root@sutang conf]# cp /httpd_bak/httpd.conf.bak /usr/local/httpd/conf/httpd.conf

3.修改配置文件启用ssl模块

(1)修改httpd.conf

把此处注释去掉,代表启用ssl模块

(2)修改ssl.conf文件

vim /usr/local/httpd/conf/extra/httpd-ssl.conf

下面的配置为访问https页面的网页目录配置。

当我们访问https://192.168.8.116/时,会去读取httpd-ssl.conf文件中的配置,根据该文件中的配置网页根目录下去找网页。

图中那两处为证书文件和密钥的配置。

(3)将证书文件复制到指定位置

[root@sutang conf]# cd /data

[root@sutang data]# cp server.crt server.key /usr/local/httpd/conf/

4.测试

(1)编写一个配置文件

echo  ssl>/usr/local/httpd/htdocs/sss.html

(2)重启服务并测试

service httpd restart

-------------------第二种----------------------

动态加载模块

(1)安装ssl模块需要的依赖

yum -y install openssl-devel

(2)加载模块

进入Apache的源码解压目录下面的modules/ssl下执行命令:

apxs -i -c -a -D HAVE_OPENSSL=1 -I /usr/include/openssl -lcrypto -lssl -ldl *.c

 

apxs命令参数说明:

-i  此选项表示需要执行安装操作,以安装一个或多个动态共享对象到服务器的modules目录中。

-a  此选项自动增加一个LoadModule行到httpd.conf文件中,以激活此模块,或者,如果此行已经存在,则启用之。

-A  与 -a 选项类似,但是它增加的LoadModule命令有一个井号前缀(#),即此模块已经准备就绪但尚未启用。

-c  此选项表示需要执行编译操作。它首先会编译C源程序(.c)files为对应的目标代码文件(.o),然后连接这些目标代码和files中其余的目标代码文件(.o和.a),以生成动态共享对象dsofile 。如果没有指定 -o 选项,则此输出文件名由files中的第一个文件名推测得到,也就是默认为mod_name.so

(3)查看模块

查看模块确认模块是否加载成功。

[root@sutang ssl]# cd /usr/local/httpd/modules/

[root@sutang modules]# ls

httpd.exp  mod_ssl.so

[root@sutang modules]#

3.修改配置文件

(1)修改httpd.conf启用模块

vim /usr/local/httpd/conf/httpd.conf

确认是否启用ssl模块

取消注释调用ssl的配置文件。

(2)修改ssl.conf文件

vim /usr/local/httpd/conf/extra/httpd-ssl.conf

下面的配置为访问https页面的网页目录配置。

当我们访问https://192.168.8.116/时,会去读取httpd-ssl.conf文件中的配置,根据该文件中的配置网页根目录下去找网页。

图中那两处为证书文件和密钥的配置。

(3)将证书文件复制到指定位置

[root@sutang conf]# cd /data

[root@sutang data]# cp server.crt server.key /usr/local/httpd/conf/

4.测试

(1)编写一个配置文件

echo  sslabc >/usr/local/httpd/htdocs/abc.html

(2)重启服务并测试

service httpd restart

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值