使用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.www58058.com/48837
文章實操性很強,每一步都很明確,整個實驗過程很流暢,贊一個。