环境: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 手册。
加密分类:
对称加密
建立在双方互相信任的基础上,密钥只有一种,只有在拥有密钥的前提下才能解密数据。没有密钥,别人无法看到解密后的数据。
加密机制:
明文加密:telnet ftp pop3 密码不可靠;sendmail NFS NIS 信息数据的不可靠;rsh rcp 验证的不可靠
步骤:
CA产生
cd /etc/pki 公钥基本设置
vim tls/openssl.cnf
图1
创建目录
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
图2
可以利用88,90 s/match/optional来修改,这样其他的地区也可以颁发
图3
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
产生证书
openssl ca -in httpd.req -out httpd.cert
图6
数据库已经更新
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<请将批注掉!