使用openssl创建私有CA
配置文件/etc/pki/tls/openssl.cnf
certs = $dir/certs # Where the issued certs are kept 已经证书存放目录
crl_dir = $dir/crl # Where the issued crl are kept 吊销证书列表存放目录
database = $dir/index.txt # database index file. 颁发过证书的索引(数据文件)
#unique_subject = no # Set to 'no' to allow creation of
# several ctificates with same subject.
new_certs_dir = $dir/newcerts # default place for new certs. 创建新证书存放目录
certificate = $dir/cacert.pem # The CA certificate CA的自签证书
serial = $dir/serial # The current serial number 当前证书的编号
crlnumber = $dir/crlnumber # the current crl number 吊销证书编号
# must be commented out to leave a V1 CRL
crl = $dir/crl.pem # The current CRL 当前吊销的证书
private_key = $dir/private/cakey.pem# The private key CA的私钥
RANDFILE = $dir/private/.rand # private random number file
default_days = 365 # how long to certify for 默认证书有效期一年
default_crl_days= 30 # how long before next CRL 默认crl有效期为30天
default_md = sha256 # use SHA-256 by default 使用sha256算法
服务器端:
1、 生成秘钥对
(umask 077 ;openssl genrsa –out private/cakey.pem 2048)
将生成的秘钥权限设置为600的权限,仅属主能访问,并且生成2048位的秘钥
如果想查看公钥可以使用如下指令
openssl rsa -key private/cakey.pem -pubout -out key
2、 生成自签证书
opensl req -new –x509 -key private/cakey.pem -out cacert.pem -days 3655
生成自签证书此时自己就是证书的颁发机构,并且证书的有效期为10年,在生成证书的时候需要填写国家,州或省份,城市,公司名,组织名等等信息,这里默认要求国家省份和组织名要求和CA的一样,如果有用户请求前三项不一样时,可以修改openssl.cnf配置文件将下面的前三项修改optional值即可,这时就不需要要求一致了
[ policy_match ]
countryName = match
stateOrProvinceName = match
organizationName = match
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
3、在完成自签证书之后需要创建存放证书数据文件、证书编号文件和证书吊销列表文件,并给出serial的值为01
touch index.txt serial crlnumber
echo 01 > serial
客户端
假如我这里为httpd服务颁发证书,这时候需要在主机上生成秘钥,保存至应用此证书的服务的配置文件目录下,比如我将证书放在/etc/httpd/ssl下
mkdir /etc/httpd/ssl
cd /etc/httpd/ssl
(umask 077; openssl genrsa -out httpd.key 1024) 生成秘钥
openssl req -new -key httpd.key -out httpd.csr 生成证书签署请求
将文件发往CA服务
scp httpd.csr root@10.1.252.100:/root
CA服务器签署证书
openssl ca -in /root/httpd.csr -out httpd.crt -days 365
查看生成的证书
openssl x509 -in httpd.crt -pubout -text|subject|serial|date
将生成好的证书发往客户端
scp httpd.crt root@10.1.252.101:/etc/httpd/ssl
吊销证书
如果此时证书不想用了,或者被别人给盗用了,这时候需要吊销证书
openssl ca -revoke /etc/pki/CA/newcerts/01.pem
生成吊销证书的编号(第一次吊销一个证书时才需要执行)
echo 01> /etc/pki/CA/crlnumber
更新证书吊销列表
openssl ca -gencrl -out /etc/pki/CA/crl/ca.crl
查看crl文件
openssl crl -in /etc/pki/CA/crl/ca.crl -noout -text
编译安装dropbear
1、 准备编译安装环境
yum -y groupinstall “Development Tools”
2、 到官网下载源码包
https://matt.ucc.asn.au/dropbear/dropbear.html
3、 解压源码包
tar xf dropbear-2013.58
cd dropbear-2013.58
4、 开始编译安装,还是老三步(./configure make make install)
通过查看INSTALL编译安装步骤来进行编译安装
./configure 生成makefile文件
make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" 这里编译安装的工具是可选的,可以根据需求进行取舍,我这里全部都装上
make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" install 将生成的文件复制到指定的目录下第一个是服务端工具,其他都是客户端工具
5、 生成秘钥,利用编译生成的工具dropbearkey工具来生成秘钥
dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key
dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key
6、 启动服务,在我们系统当中默认的ssh服务使用了22端口,所以在启动时使用其他的端口进行启动dropbear服务
dropbear -p 22033 -F 在前台运行
使用ss –tan 查看22022端口是否已经监听
7、 测试利用客户端工具dbclient进行访问本地回环地址
dbclient –p 22022 root@127.0.0.1
最后提供一个服务脚本,就可以用service命令来管理了,脚本内容如下
#!/bin/bash
#
#description: dropbear ssh daemon
#chkconfig: 2345 66 33
#
dsskey=/etc/dropbear/dropbear_dss_host_key
rsakey=/etc/dropbear/dropbear_rsa_host_key
pidfile=/var/run/dropbear.pid
lockfile=/var/lock/subsys/dropbear
dropbear=/usr/local/sbin/dropbear
dropbearkey=/usr/local/bin/dropbearkey
[ -r /etc/rc.d/init.d/functions ] && . /etc/rc.d/init.d/functions
[ -r /etc/sysconfig/dropbear ] && . /etc/sysconfig/dropbear
key
size=${keysize:-1024}
port=${prot:-22022}
gendsskey() {
[ -d /etc/dropbear]||mkdir /etc/dropbear
echo -n "Starting genrate the dss key:"
$dropbearkey -t dss -f $dsskey
RETVAL=$?
echo
if [ $RETVAL -eq 0 ];then
success
echo
return 0
else
failure
return 1
fi
}
genrsakey() {
[ ! -d /etc/dropbear]||mkdir /etc/dropbear
echo -n "Starting genrate the dss key:"
$dropbearkey -t rsa -s $keysize -f $rsakey
RETVAL=$?
echo
if [ $RETVAL -eq 0 ];then
success
echo
return 0
else
failure
echo
return 1
fi
}
start() {
[ -e $dsskey ] ||gendsskey
[ -e $rsakey ] || genrsakey
if
[ -e $lockfile ] ;then
echo -n "dropbear daemon is already running."
success
echo
exit 0
fi
echo -n "starting dropbear: "
daemon –pidfile="$pidfile"
$dropbear -p $port -d $dsskey -r $rsakey
RETVAL=$?
echo
if [ $RETVAL -eq 0 ];then
touch $lockfile
return 0
else
rm -rf $lockfile $pidfile
return 1
fi
}
stop() {
if [ ! -e $lockfile ] ;then
echo -n "dropbear service is stoped"
success
echo
exit 1
fi
echo -n "stopping dropbear daemon:"
killproc dropbear
RETVAL=$?
echo
if [ $RETVAL -eq 0 ] ;then
rm -rf $lockfile $pidfile
return 0
else
return 1
fi
}
status() {
if [ -e $lockfile ] ;then
echo "dropbear is running "
else
echo "dropbear is stoped.."
fi
}
usage() {
echo "Usage:dropbear {start|stop|restart|status|genrsakey|gendsskey}"
}
case $1 in
start)
start ;;
stop)
stop
;;
restart)
stop
start
;;
status)
status
;;
genrsakey)
genrsakey
;;
gendsskey)
gendsskey
;;
*)
usage
;;
esac
将此脚本复制到/etc/init.d 目录下,并给文件添加执行权限
chkconfig –add dropbear 将dropbear加到服务列表中去,此时就可以使用service命令来管理服务了
原创文章,作者:fszxxxks,如若转载,请注明出处:http://www.178linux.com/48837
评论列表(1条)
文章实操性很强,每一步都很明确,整个实验过程很流畅,赞一个。