hongmeigui22027 发表于 2018-11-22 12:55:40

基于SSL的Apache配置

  HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。该系统提供了身份验证与加密通讯方法,现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。
  
  

  SSL会话建立过程:
1.      客户端和服务器端进行交互,协商加密方式进行秘钥交互
2.      服务器端给客户端发送证书
3.      双方生成对称秘钥,并使用服务器的公钥加密后发给服务器
4.      客户端就可以访问服务器端的网页,用户的请求也以加密方式传送
  

  下面就来详细介绍基于SSL的Apache的配置

  使用rpm安装的httpd不支持ssl,需要安装mod_ssl 模块就可以支持SSL。
  
  Yum install mod_ssl
  Vim /etc/httpd/ conf.d/ssl.conf
  LoadModule ssl_module modules/mod_ssl.so
  Listen 443
  AddType application/x-x509-ca-cert.crt 证书列表
  AddType application/x-pkcs7-crl./crl 证书吊销列表
  SLPassPhraseDialogbuiltin 内部会话建立机制
  SSLSessionCache      shmcb:/var/cache/mod_ssl/scache(512000) 会话缓存
  SSLSessionCacheTimeout300 缓存超时时间
  SSLRandomSeed startupfile:/dev/urandom256 随机数的种子
  SSLRandomSeed connect builtin
  SSLCryptoDevice builtin SSL的加密设备
  只能为一个基于主机名的虚拟主机提供SSL
  
  DocumentRoot "/vhosts/magedu.com"
  ServerName www.magedu.com
  ErrorLog logs/ssl_error_log
  TransferLog logs/ssl_access_log 定义SSL会话的日志
  LogLevel warn
  SSLEngine on是否启用SSL
  SSLProtocol all -SSLv2 SSL协议的版本(默认禁用SSLv2,all –SSLv2表示使用所有的,但不包括SSLv2)
  SLCipherSuiteALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW 加密方式
  SSLCertificateFile/etc/pki/tls/certs/localhost.crt 证书文件
  SSLCertificateKeyFile/etc/pki/tls/private/localhost.key 私钥文件
  现在先建立CA
  Cd /etc/pki/CA
  Vim ../tls/openssl.cnf
  修改内容
  dir             = /etc/pki/CA
  [ req_distinguished_name ]
  countryName                     = Country Name (2 lettercode)
  countryName_default            = CN
  countryName_min               = 2
  countryName_max               = 2
  stateOrProvinceName            = State or Province Name (full name)
  stateOrProvinceName_default       =Henan
  localityName                  = Locality Name (eg, city)
  localityName_default            =ZhengZhou
  0.organizationName            = Organization Name (eg, company)
  0.organizationName_default      = magedu.com
  # we can do this but it is not needednormally :-)
  #1.organizationName             = Second Organization Name (eg,company)
  #1.organizationName_default      = World Wide Web Pty Ltd
  organizationalUnitName          = Organizational Unit Name (eg, section)
  organizationalUnitName_default   = Tech
  commonName                      = Common Name (eg, yourname or your server\'s hostname)
  commonName_max                  = 64
  emailAddress                  = Email Address
  emailAddress_max                = 64
  emailAddress_default            = admin@magedu.com
  生成CA的私钥
  # (umask 077; opensslgenrsa 1024 > private/cakey.pem)
  Generating RSA private key, 1024 bit longmodulus
  ................................................++++++
  .++++++
  e is 65537 (0x10001)
  # ll private/
  总用量 4
  -rw-------. 1 root root 887 4月 19 08:01 cakey.pem
  生成自签证书
  # openssl req -new -x509-key private/cakey.pem -out cacert.pem
  You are about to be asked to enterinformation that will be incorporated
  into your certificate request.
  What you are about to enter is what iscalled a Distinguished Name or a DN.
  There are quite a few fields but you canleave some blank
  For some fields there will be a defaultvalue,
If you enter'.', the field will be left blank.
  Country Name (2 letter code) :
  State or Province Name (full name) :
  Locality Name (eg, city) :
  Organization Name (eg, company):
  Organizational Unit Name (eg, section):
  Common Name (eg, your name or your server'shostname) []:ca.magedu.com
  Email Address :
  创建几个目录
  # mkdir newcerts certscrl
  # touch index.txt
  # echo 01 > serial
  # echo 01 > crlnumber
  为HTTP服务发证书:
  # cd /etc/httpd/conf
  # mkdir ssl
  # cd ssl
  # (umask 077; opensslgenrsa 1024 > httpd.key)
  Generating RSA private key, 1024 bit longmodulus
  ...........................++++++
  .......++++++
  e is 65537 (0x10001)
  证书签署请求
  # openssl req -new -key httpd.key-out httpd.csr
  You are about to be asked to enterinformation that will be incorporated
  into your certificate request.
  What you are about to enter is what iscalled a Distinguished Name or a DN.
  There are quite a few fields but you canleave some blank
  For some fields there will be a defaultvalue,
  If you enter '.', the field will be leftblank.
  -----
  Country Name (2 letter code) :
  State or Province Name (full name) :
  Locality Name (eg, city) :
  Organization Name (eg, company):
  Organizational Unit Name (eg, section):
  Common Name (eg, your name or your server'shostname) []:www.magedu.com
  Email Address :
  Please enter the following 'extra'attributes
  to be sent with your certificate request
  A challenge password []:
  An optional company name []:
  签署证书:
  # openssl ca -inhttpd.csr -out httpd.crt
  Using configuration from/etc/pki/tls/openssl.cnf
  Check that the request matches thesignature
  Signature ok
  Certificate Details:
  Serial Number: 1 (0x1)
  Validity
  Not Before: Apr 19 00:11:46 2014 GMT
  Not After : Apr 19 00:11:46 2015 GMT
  Subject:
  countryName               = CN
  stateOrProvinceName       = Henan
  organizationName          = magedu.com
  organizationalUnitName    = Tech
  commonName                =www.magedu.com
  emailAddress            =admin@magedu.com
  X509v3 extensions:
  X509v3 Basic Constraints:
  CA:FALSE
  Netscape Comment:
  OpenSSL Generated Certificate
  X509v3 Subject Key Identifier:
  CA:8B:7D:A1:67:2D:E7:A8:8B:A4:D7:AD:FE:11:9D:F2:AF:48:C1:05
  X509v3 Authority Key Identifier:
  keyid:CF:6B:CE:CB:9F:F4:67:84:24:79:DF:2D:04:5A:7F:59:20:AE:CF:6C
  Certificate is to be certified until Apr 1900:11:46 2015 GMT (365 days)
  Sign the certificate? :y
  1 out of 1 certificate requests certified,commit? y
  Write out database with 1 new entries
  Data Base Updated
  修改配置文件:
  Vim /etc/httpd/conf.d/ssl.conf
  SSLCertificateFile/etc/httpd/conf/ssl/httpd.crt
  SSLCertificateKeyFile/etc/httpd/conf/ssl/httpd.key
  开启服务:
  Service httpd restart
  将证书复制在本地机器上
  /etc/pki/CA/cacert.pem
  将其名称改为cacert.crt
  导入到浏览器中,这时在浏览器中输入Https://www.magedu.com就可以进行访问了。
  





页: [1]
查看完整版本: 基于SSL的Apache配置