且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

apache下实现CA颁发及来源控制身份验证

更新时间:2022-09-16 21:13:15

环境rhel5.4  httpd-2.2. 3mod-ssl

原理

第一步:AB双方商量使用什么加密算法,怎么加密等等。 第二步:A发送证书给B,为了使B相信他。 第三步:B相信了,就生成对称密钥,将请求页面发送给A。 最后,A使用B发送的密钥加密后,将请求回应给B。

由于B要验证A的身份,因此,这里引入了第三方权威颁发机构,即CA,可以给A发证书。而B是相信CA的,因此,B拥有CA的证书。

则,A生成一对公钥,发送给CA进行签署(可以理解为盖章)得到证书,然后返回给自己,并且配置服务器,使之能使用证书。而B收到A的证书后,使用保存在主机上的CA证书去验证。

基本概念

1、SSL所使用的证书可以自己生成,也可以通过一个商业性CA(如Verisign 或 Thawte)签署证书。
    2
、证书的概念:首先要有一个根证书,然后用根证书来签发服务器证书和客户证书,一般理解:服务器证书和客户证书是平级关系。在SSL必须安装根证书和服务器证书来认证。 因此:在此环境中,至少必须有三个证书:根证书,服务器证书,客户端证书
在生成证书之前,一般会有一个私钥,同时用私钥生成证书请求,再利用证书服务器的根证来签发证书。

3、签发证书的问题:我最近找了很多关于openssl的资料,基本上只生成了根证书和私钥及服务器证书请求,并没有真正的实现签证。我这里参考了一些资料,用openssl自带的一个CA.sh来签证书,而不是用MOD_ssl里的sign.sh来签。用openssl语法来生成证书,有很多条件限定,如目录,key的位置等,比较麻烦,我实验了好几天,最后放弃了。有兴趣的可以参考一下openssl 手册。

 加密分类

对称加密 
    建立在双方互相信任的基础上,密钥只有一种,只有在拥有密钥的前提下才能解密数据。没有密钥,别人无法看到解密后的数据。

非对称加密
    先手动生成一对密钥,公钥和私钥,公钥可以被任何人拥有,私钥一般只有自己保存,公钥发布出去,自己用私钥加密后的数据文件被获取了公钥的另一方获取,就可以解密数据文件。一般用于,身份验证,让自己授权的一些人查看自己用私钥机密的数据,或者让对方用自己的公钥加密后的文件自己用私钥可以查看。

单向加密
    验证数据的完整性,一般用于数字签名。
    对数据单向加密,生成特征码,用来验证数据的完整性。数据发生微笑的变化,就会引发雪崩效应,从而能够确认数据是否完整。
目前的数字签名是建立在公共密钥***基础上,它是公用密钥加密技术的另一类应用。它的主要方式是,报文的发送方从报文文本中生成一个128位的散列值(或报文摘要)。发送方用自己的私人密钥对这个散列值进行加密来形成发送方的数字签名。然后,这个数字签名将作为报文的附件和报文一起发送给报文的接收方。报文的接收方首先从接收到的原始报文中计算出128位的散列值(或报文摘要),接着再用发送方的公用密钥来对报文附加的数字签名进行解密。如果两个散列值相同、那么接收方就能确认该数字签名是发送方的。通过数字签名能够实现对原始报文的鉴别。

加密机制:

明文加密:telnet    ftp   pop3  密码不可靠sendmail   NFS  NIS    信息数据的不可靠;rsh   rcp    验证的不可靠

 

步骤:

CA产生

cd   /etc/pki   公钥基本设置

vim tls/openssl.cnf

图1

apache下实现CA颁发及来源控制身份验证

创建目录

mkdir  certs  newcerts   cr1

touch index.txe serial

echo 01>serial   在发起没一份证书时候都要在这个证书上面增加1

产生私钥文件

私钥文件   openssl  genrsa   1024  >私钥文件

openssl genrsa 1024>private/cakey.pem

chmod 600 private/*     私钥文件是不被其他人读取的,需要修改权限

 

请求文件

首先给自己颁发证书,这样别人才会相信你这个机构,方法:

请求文件  openssl  req  -new  -key  私钥文件  -out  请求文件

openssl req -new -key private/cakey.pem-x509 -out cacert.pem

更改默认值

图4

apache下实现CA颁发及来源控制身份验证

图2

apache下实现CA颁发及来源控制身份验证

可以利用88,90 s/match/optional来修改,这样其他的地区也可以颁发

图3

 apache下实现CA颁发及来源控制身份验证

 

ssl服务设置

加载模块能接受443端口

rpm -ivh mod_ssl-2.2.3-31.el5.i386.rpm  产生依赖性

rpm -ivh distcache-1.4.5-14.1.i386.rpm  依赖于这个模块

loadModule ssl_module modules/mod_ssl.so

listen 443

服务器产生私钥

openssl genrsa 1024 > httpd.key

更改权限

Chmod 600 httpd.key

openssl req -new -key httpd.key -out httpd.req 产生请求

图5

apache下实现CA颁发及来源控制身份验证

产生证书

openssl ca -in httpd.req -out httpd.cert

图6

apache下实现CA颁发及来源控制身份验证

数据库已经更新

 

 

web服务器于证书绑定

vim /etc/httpd/conf.d/ssl.conf

首先指明证书文件存放的位置

sslcertificateFile /etc/httpd/certs/httpd.cert

私钥文件存放的位置

sslcertificateKeyFile /etc/httpd/certs/httpd.ke

启动fttpd

service httpd restart

检查错误,查看端口看是否启动

tail -f /var/log/httpd/error_log  查看apache的错误日志信息

netstat -tupln |grep httpd        查看端口

测试

分别使用http和https 来测试,当使用https来测试的时候系统会提示授权个你证书..

以上就是实现apache安装CA颁发

 

来源控制及身份验证

 /etc/httpd/conf/httpd.conf (主要配置文件) 

 documentRoot "/var/www/html"   <==可以改成你放置站点的主目录

 allow   Override               允许的覆写参数功能

选项:

    all:           全部的权限均可被覆写; 

    authConfig:    仅有网页认证 (账号密码) 可覆写; 

    indexes:       仅允许 Indexes 方面的覆写; 

    limits:        允许使用者利用 Allow, Deny 与 Order 管理可浏览的权限; 

    none:          不可覆写,亦即让 .htaccess 档案失效

    user apache     运行者的身份

    group apache

 

来源控制:

  <Directory>

         allow  Override all

         order, Allow, Deny    (对网页设置权限):

         deny,allow:以 deny 优先处理,但没有写入规则的则默认为 allow

          allow,deny:以 allow 为优先处理,但没有写入规则的则默认为 deny.

</Directory>

 

身份验证:

       vim.htaccess 产生说明文件

       authuserfile+你需要验证的账号库的地址

       authname提示文字

       authtype身份验证的类型

       require对访问者的要求

       htpasswd c  产生账号新文件

    directoryIndex index.html index.html.var<==首页『档案的档名』设定

/etc/httpd/conf.d/*.conf (很多的额外参数档,扩展名是 .conf)

你系统升级的时候,你几乎不需要更动原本的配置文件,只要将你自己的额外参数档复制到正确的地点

/usr/lib64/httpd/modules/, /etc/httpd/modules/外挂模块

/var/www/html/        首页所在目录

/var/www/error/       服务器设定错误,或者是浏览器端要求的数据错误时,在浏览器上出现错误讯息就以这个目录的默认讯息为主!

/var/www/icons/       图示文件

/var/www/cgi-bin/CGI  (网页程序) 程序放置的目录

/var/log/httpd/Apache  登录档

/usr/sbin/apachectlApache 的主要执行档

/usr/sbin/httpdApache  二进制执行文件

/usr/bin/htpasswdApache 密码保护

至于 MySQL 方面,你需要知道的几个重要目录与档案有

/etc/my.cnf            MySQL的配置文件

/var/lib/mysql/MySQL   数据库档案放置

针对服务器环境的设定项目

vim /etc/httpd/conf/httpd.conf

serverTokens OS          客户端我们服务器的版本与操作系统而已

serverRoot "/etc/httpd"  服务器设定的最顶层目录

pidFile run/httpd.pid    放置 PID 的档案

timeout 6060             秒则该次联机就中断

keepAlive On             是否允许持续性的联机

maxKeepAliveRequests 500 该次联机能够传输的最大传输数量

keepAliveTimeout 15则    该次联机在最后一次传输后等待延迟的秒

startServers=启动 httpd 时,唤醒几个 PID 来处理服务

针对中文 big5 语系编码的设定参数修改

vim /etc/httpd/conf/httpd.conf

找到底下这一行,应该是在 747 行左右# AddDefaultCharset UTF-8<请将批注掉!

 










本文转自 only223wym 51CTO博客,原文链接:http://blog.51cto.com/ymchaofeng/1292228,如需转载请自行联系原作者