zoukankan      html  css  js  c++  java
  • linux下apache+openssl配置记录

     软件环境

    Apache Httpd 2.2.29 (http://httpd.apache.org )
    OpenSSL 1.0.1h (http://www.openssl.org/source )
    SSL-Tools (http://www.openssl.org/contrib/ssl.ca-0.1.tar.gz )

    1. OpenSSL

    #tar zxvf openssl-1.0.1h.tar.gz
    #cd openssl-1.0.1h
    #./config
    #make
    #make install

    此举将安装最新的OpenSSL到/usr/local/ssl文件夹中。无需理会系统中已有版本号的OpenSSL,也不要去卸载它,否则会导致非常多的应用程序无法正常运行,比如X窗体无法进入等错误。

    2. Apache Httpd

    #tar zxvf httpd-2.2.29.tar.gz

    #cd httpd-2.2.29
    #./configure --prefix=/usr/local/apache/httpd --enable-ssl=static --with-ssl=/usr/local/ssl
    #make
    #make install

    此步骤在/apache/httpd文件夹中安装httpd服务(通过參数--prefix指定)。同一时候使用--with-ssl指定刚才所安装OpenSSL的路径,用于将mod_ssl静态的编译到httpd服务中。



    3.制作证书

    我们必须手工来生成SSL用到的证书。对证书不熟悉的人,有一个工具能够使用:http://www.openssl.org/contrib/ssl.ca-0.1.tar.gz  。以下是怎样通过这个工具来生成证书的过程:

    #cp ssl.ca-0.1.tar.gz /usr/local/apache/httpd/conf
    #cd /usr/local/apache/conf
    #tar zxvf ssl.ca-0.1.tar.gz
    #cd ssl.ca-0.1
    #./new-root-ca.sh (生成根证书)
    No Root CA key round. Generating one
    Generating RSA private key, 1024 bit long modulus
    ...........................++++++
    ....++++++
    e is 65537 (0x10001)
    Enter pass phrase for ca.key:12345 (输入一个password)
    Verifying - Enter pass phrase for ca.key: 12345(再输入一次password)
    ......
    Self-sign the root CA... (签署根证书)
    Enter pass phrase for ca.key:12345 (输入刚刚设置的password)
    ........
    ........ (以下開始签署)
    Country Name (2 letter code) [MY]:CN
    State or Province Name (full name) [Perak]:SD  //随你喜欢
    Locality Name (eg, city) [Sitiawan]:QD  //随你喜欢
    Organization Name (eg, company) [My Directory Sdn Bhd]:GX  //随你喜欢
    Organizational Unit Name (eg, section) [Certification Services Division]:GX  //随你喜欢
    Common Name (eg, MD Root CA) []:gaoxin.com //随你喜欢
    Email Address []:12345@163.com//随你喜欢
    这样就生成了ca.key和ca.crt两个文件,以下还要为我们的server生成一个证书:
    # ./new-server-cert.sh server (这个证书的名字是server)
    ......
    ......
    Country Name (2 letter code) [MY]:CN
    State or Province Name (full name) [Perak]:SD
    Locality Name (eg, city) [Sitiawan]: QD
    Organization Name (eg, company) [My Directory Sdn Bhd]:GX
    Organizational Unit Name (eg, section) [Secure Web Server]:GX
    Common Name (eg, www.domain.com) []:gaoxiaoit.com (必须与上面的不同,否则报错)
    Email Address []:12345@163.com
    这样就生成了server.csr和server.key这两个文件。


    还须要签署一下才干使用的:
    # ./sign-server-cert.sh server
    CA signing: server.csr -> server.crt:
    Using configuration from ca.config
    Enter pass phrase for ./ca.key:12345 (输入上面设置的根证书password)
    Check that the request matches the signature
    Signature ok
    The Subject's Distinguished Name is as follows
    countryName:PRINTABLE:'CN'
    stateOrProvinceName:PRINTABLE:'GanSu'
    localityName:PRINTABLE:'LanZhou'
    organizationName:PRINTABLE:'lzu'
    organizationalUnitName:PRINTABLE:'lzu'
    commonName:PRINTABLE:'localhost'
    emailAddress :IA5STRING:'sunyanmeng@gmail.com'
    Certificate is to be certified until Jan 19 21:59:46 2011 GMT (365 days)
    Sign the certificate? [y/n]:y
    1 out of 1 certificate requests certified, commit? [y/n]y
    Write out database with 1 new entries
    Data Base Updated
    CA verifying: server.crt <-> CA cert
    server.crt: OK

    配置conf/extr/httpd-ssl.conf

    找到#include conf/extra/httpd-ssl.confm去掉凝视
    以下要依照httpd-ssl.conf里面的设置。将证书放在适当的位置。
    SSLCertificateFile "/usr/local/apache/httpd/conf/server.crt"
    SSLCertificateKeyFile "/usr/local/apache/httpd/conf/server.key"


    # cd ..
    # mkdir ssl.key
    # mv ssl.ca-0.1/server.key ssl.key
    # mkdir ssl.crt
    # mv ssl.ca-0.1/server.crt ssl.crt
    然后就能够启动啦!


    # cd /usr/local/apache
    注意。apache2.2之后不支持startssl。所以仅仅用start就可以
    # ./bin/apachectl start

    4. 測试HTTP服务

    使用浏览器打开地址:https://127.0.0.1   完成!

    。这样能够訪问,可是浏览器每次訪问都要确定,并且提示不安全,这要把ca证书导入浏览器的受信任列表里。

    然后就不会有不论什么提示了。

    接下来你可能须要双向认证:

    1.new-user-cert.sh user

    common name 与上面要不同我这里直接用的user

    2.sign-user-cert.sh user

    注冊完后事实上已经完毕,可是这里还须要生成一种浏览器须要的格式

    3.p12.sh user

    这里事实上是把user的crt和key合成了user.12

    另外在http-ssl.conf内做例如以下配置

    SSLCACertificateFile "/usr/local/apache/httpd/conf/ca.crt"

    上面的配置对照服务端的认证就是我们须要将ca证书倒入浏览器信任列表。即把根证书给对方,接受信任

    SSLVerifyClient require
    SSLVerifyDepth  10
    这里的配置对照服务端的认证就是我们在浏览器要输入https,即告诉对方我要证书。

    接下来最后一步。把生成的12文件倒入浏览器就可以訪问。

    (这里相应的服务端认证就是我们把server的key和crt放入apache的指定路径)

  • 相关阅读:
    MVC设计模式
    二十三种设计模式
    描绘质量属性的六个常见属性场景。
    《架构漫谈》读后感
    软件架构师的工作过程
    《架构之美》阅读笔记06
    《架构之美》阅读笔记05
    《架构之法》阅读笔记04
    《架构之美》阅读笔记03
    《构架之美》阅读笔记02
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/7120060.html
Copyright © 2011-2022 走看看