zoukankan      html  css  js  c++  java
  • Apache配置HTTPS协议搭载SSl配置全过程

    1.首先要开启相应的扩展和辅助的dll(ssleay32.dll,libeay32.dll)到system32下

    2.生成服务器证书

    安装好在bin目录下有一个openssl.exe文件,用来生成证书和密钥。
    1). 生成服务器用的私钥文件server.key

    (注:在Windows操作系统环境下需先设置Openssl环境变量:在DOS命令下进入conf目录,执行命令行:set OPENSSL_CONF=..confopenssl.cnf;请在执行之前确保openssl.cnf存在,否则会出现:WARNING: can't open config file: /usr/local/ssl/openssl.cnf 信息提示。还有在windows系统下.cnf 默认会被当成快捷方式,看不到扩展名。)

    在DOS命令下进入bin目录,执行命令行
      命令:openssl genrsa 1024 > server.key
      说明:这是用128位rsa算法生成密钥,得到server.key文件 > 是输出文件的标识符

    这种生成方法生成的是没有密钥的私钥文件,当然,Apache提供了加入密钥(Password)的命令,就是加入参数-des3,全部的命令为:

    命令:openssl genrsa 1024 -des3 > server.key
      使用 openssl genrsa -des3 > 1024 server.key生成私钥文件是需要输入密钥的,运行的时候会让你输入并确认你的密钥,但是在Windows环境下会导致以下错误:
     错误:Apache启动失败,错误提示是:Init: SSLPassPhraseDialog builtin is not supported on Win32 (key file .....)
      原因是window下的apache不支持加密的私钥文件。可不使用des3加密。
     注:生成的证书中RSA密钥对的默认长度是1024,取值是2的整数次方。建议使用4096以上。windows下设置环境变量的时候,set后变量后面不要跟分号;

    2). 生成未签署的server.csr
      进入bin目录,执行命令行
      命令:openssl req -new -key server.key > server.csr

    说明:这是用步骤1的密钥生成证书请求文件server.csr, 这一步会有很多参数,需要一一输入
     按提示输入一系列的参数,
    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):SW_TECH公司名称
    Organizational Unit Name (eg, section) []:SW_TECH组织名称
    Common Name (eg, YOUR name) []:kedou.com申请证书的域名
    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.conf中server name必须一致,否则apache不能启动 (启动apache时错误提示为:RSA server certificate CommonName (CN) `Kedou' does NOT match server name!? )  
    3). 签署服务器证书文件server.crt
      进入bin目录,执行命令行
    命令:openssl req -x509 -days 365 -key server.key -in server.csr > server.crt
    说明:这是用步骤1,2的的密钥和证书请求生成证书server.crt,-days参数指明证书有效期,单位为天,x509表示生成的为X.509证书。
     
      以上签署证书仅仅做测试用,真正运行的时候,应该将CSR发送到一个CA返回真正的用书.网上有些文档描述生成证书文件的过程比较繁琐,就是因为
      他们自己建立了一个CA中心证书,然后再签署server.csr.
      用openssl x509 -noout -text -in server.crt可以查看证书的内容。证书实际上包含了Public Key.


    3. 配置httpd.conf
    开启相应的模块:
    LoadModule ssl_module modules/mod_ssl.so
    引入httpd-ssl.conf文件:
    Include conf/extra/httpd-ssl.conf

    httpd-ssl.conf中的配置修改:
    找到一个443的虚拟主机配置项,如下:
    <VirtualHost _default_:443>
       SSLEngine On
       SSLCertificateFile ../bin。dourl.cnf/server.crt
       SSLCertificateKeyFile ../bin。dourl.cnf/server.key
       #SSLCertificateChainFile ../bin。dourl.cnf//ca.crt // 暂未启用
       #......
       DocumentRoot "D:/programs/Apache2.2/htdocs"
       ServerName www.kedou.com:443
    </VirtualHost>

    改成以下:

    <VirtualHost _default_:443> 也改为 <VirtualHost www.kedou.com:443>
         此时,即便ServerName是任意的,系统仍然正常运行,仅仅Apache log提示"does NOT match server name"
    注意到ssl.conf的配置都在标签<IfDefine SSL>中,所以为了使IfDefine 指令有效,运行apache 的时候要加上 -D SSL 参数。

    apache -D SSL -k start

    windows下是httpd -D SSL -k start.

    如果仍然启动不了apache,logs目录下报错是SSLSessionCache的缘故的话,就要引入ssl共享缓存模块:
    httpd.conf中开启该模块:
    LoadModule socache_shmcb_module modules/mod_socache_shmcb.so即可
     
  • 相关阅读:
    Dot Net WinForm 控件开发 (七) 为属性提下拉式属性编辑器
    WinForm 程序的界面多语言切换
    c#遍历HashTable
    Dot Net WinForm 控件开发 (三) 自定义类型的属性需要自定义类型转换器
    Dot Net WinForm 控件开发 (六) 为属性提供弹出式编辑对话框
    Dot Net WinForm 控件开发 (一) 写一个最简单的控件
    Dot Net WinForm 控件开发 (四) 设置属性的默认值
    Dot Net WinForm 控件开发 (二) 给控件来点描述信息
    Dot Net WinForm 控件开发 (八) 调试控件的设计时行为
    Dot Net WinForm 控件开发 (五) 复杂属性的子属性
  • 原文地址:https://www.cnblogs.com/xingmeng/p/3195783.html
Copyright © 2011-2022 走看看