Apache 配置支持HTTPS的SSL证书-生成CA证书

发布时间:2018-06-22 09:50:24   来源:文档文库   
字号:

Apache 配置支持HTTPSSSL证书

在设置Apache + SSL之前, 需要做:

安装Apache, 下载安装Apache时请下载带有ssl版本的Apache安装程序.

并且ssl需要的文件在如下的位置:

 

    [Apache安装目录]/modules/ mod_ssl.so

    [Apache安装目录]/bin/ openssl.exe, libeay32.dll, ssleay32.dll, openssl.cnf

    [Apache安装目录]/conf/ openssl.cnf

创建SSL证书(注意,我下载的是PHPStudy里面自带了openssl,但是bin目录下没有openssl.cnf,需要将conf下的openssl.cnf拷贝一份到bin目录下,但总体原理一样)

 

.生成一个带CACertificate Authority)授权的证书

打开CMD,进入到Apache安装目录下的bin目录下:

步骤一:

       执行命令,生成私钥:

openssl genrsa -out tian_server.key 2048

       (RSA密钥对的默认长度是1024,取值是2的整数次方,并且密钥长度约长,安全性相对会高点)。 

      完成密钥server.key生产完毕后进行步骤二操作。

步骤二:

配置openssl.cnf

请确保以下数据这里所要求的值

default_md = md5 #默认是default,会触发[default digest message is not supported ]

req_extensions = v3_req #默认签名被注释了

[ v3_req ]

basicConstraints = CA:FALSE

keyUsage = nonRepudiation, digitalSignature, keyEncipherment

subjectAltName = @alt_names  #此项不存在,需要添加

[ alt_names ] #此项不存在,需要添加,注意DNS.x

DNS.1 = www.iamtester.com #自定义

DNS.2 = img.iamtester.com #自定义

DNS.3 = static.iamtester.com #自定义

DNS.4 = www.abc.iamtester.com #自定义

DNS.5 = www.abciamtester.com #自定义

DNS.6 = iamtester.net #自定义

然后创建目录和文件

demoCA/

         newcerts/

         private/

         index.txt

         index.txt.attr

         serial #此文件初始值输入00即可

生成Certificate Signing Request文件,用于向CA机构申请证书:

openssl req -new -key tian_server.key -out tian_server.csr  -config openssl.cnf

(如果不加-config .openssl.cnf参数的话,常会报Unable to load config info from .../ssl/openssl.cnf

之后就会要求输入一系列的参数:

    Country Name (2 letter code) [AU]:CN ISO 国家代码(只支持两位字符)

    State or Province Name (full name) [Some-State]:ZJ 所在省份

    Locality Name (eg, city) []:HZ 所在城市

    Organization Name (eg, company): 公司名称

    Organizational Unit Name (eg, section) []: 组织名称

    Common Name (eg, YOUR name) []: 申请证书的域名(建议和httpd.confserverName必须一致)

    Email Address []:admin@admin.com 管理员邮箱

    Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: 交换密钥 

    An optional company name []:

注:Common Name建议和httpd.confserverName必须一致,或者与openssl.cnf 中的alt_names中的一个域名保持一致,否则证书有可能申请不到,并且启动 apache 时错误提示为:server RSA certificate CommonName (CN) `Kedou' does NOT match server name!?     

我们得到CSR之后,第三方CA机构申请通过后,会把生成好下发给你,如果你选择了第三方机构,可以跳过步骤三和四,直接到步骤五。

步骤三:

 生成一个根证书,用于签名以上证书文件。

1. #生成顶级CA的公钥证书和私钥文件,有效期10年(RSA 1024bits,默认)  

2. openssl req -new -x509 -days 3650 -keyout CARoot1024.key -out CARoot1024.crt  -config openssl.cnf

3. 为顶级CA的私钥文件去除保护口令 ,这一步可选,建议不要执行

4. #openssl rsa -in CARoot1024.key -out CARoot1024.key    -config openssl.cnf

CARoot1024.crt 是数字签名证书,实质也是个pem文件。

步骤四:

    用我们自己的CARoot 授权服务器证书(本步骤需要保持网络连接通畅,否则可能造成txt_DB error

1. 使用CA的公私钥文件给 csr 文件签名,生成应用证书,有效期5  

2. openssl ca -in tian_server.csr -out tian_server.crt -cert CARoot1024.crt -keyfile CARoot1024.key -days 1826 -entensions v3_req -policy policy_anything  -config openssl.cnf

3. #使用CA的公私钥文件给 csr 文件签名,生成中级证书,有效期5  

4. #openssl ca -extensions v3_ca -in tian_server.csr -out tian_server.crt -cert CARoot1024.crt -keyfile CARoot1024.key -days 1826 -policy policy_anything   -config openssl.cnf

以上是生成根证书与应用证书过程中要用到的所有命令,根据生成目标不同,分为两组。其中,前面一组都用于生成自签名的顶级CA

最后一组用于生成非自签名的证书,包括中级证书与应用证书。所谓中级证书,是具有继续颁发下级证书权限的子CA,而本文中所说的应用证书,特指不能用来继续颁发下级证书,只能用来证明个体身份的证书。顶级CA在签发二者的时候,只是多少一个 -extensions v3_ca 选项的区别,这个选项赋予被签发的证书继续签发下级证书的权力。

步骤五:

       配置 httpd.conf. Apacheconf\extra目录下的 httpd_ssl.conf 文件是关于 ssl 的配置,是httpd.conf的一 部分。

        httpd.conf 中添加下列两行:

步骤六:

  (注意:相同部分被省略掉)

以上最容易出问题的地方是http_ssl.conf中的日志等路径问题,建议按照物理路径进行设置



步骤八:

调试运行Apache,对于Apache。如果是集成板的如xamppwampserver,或者phpstudy启动Apache Server,可能我们不知道我们的服务器出现了什么问题,建议查看 Apache/logs下的日志,在此基础上,配合Cmd命令行在bin目录下运行httpd命令,如果不报错,说明服务器运行没问题,否则更具提示修改问题

.生成一个不带CA授权的自签名证书

生成一个key,你的私钥,openssl会提示你输入一个密码,可以输入,也可以不输,

本文来源:https://www.2haoxitong.net/k/doc/cb0f92cea1116c175f0e7cd184254b35effd1a49.html

《Apache 配置支持HTTPS的SSL证书-生成CA证书.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式