创建私有CA及dropbear的编译安装

使用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

1.jpg

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

    2.jpg

    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 生成证书签署请求

    3.jpg

    4.jpg


将文件发往CA服务

scp httpd.csr  root@10.1.252.100:/root

 

 

CA服务器签署证书

openssl  ca  -in /root/httpd.csr  -out httpd.crt -days 365

    5.jpg

 

查看生成的证书

openssl x509 -in  httpd.crt -pubout -text|subject|serial|date

6.jpg

将生成好的证书发往客户端

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   将生成的文件复制到指定的目录下第一个是服务端工具,其他都是客户端工具

7.jpg

 

5、  生成秘钥,利用编译生成的工具dropbearkey工具来生成秘钥

dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key

dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key

8.jpg

6、  启动服务,在我们系统当中默认的ssh服务使用了22端口,所以在启动时使用其他的端口进行启动dropbear服务

dropbear -p 22033  -F    在前台运行 

使用ss –tan 查看22022端口是否已经监听

 

 

7、  测试利用客户端工具dbclient进行访问本地回环地址

dbclient –p 22022 root@127.0.0.1

9.jpg

 

 

最后提供一个服务脚本,就可以用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

赞 (0)
fszxxxksfszxxxks
上一篇 2016-09-26 07:44
下一篇 2016-09-26 08:06

相关推荐

  • Linux的发展史和Linux的终端类型

    Linux的发展史和Linux的终端类型 前言:    随着时代的发展,Linux所占的市场份额越来越大,目前几乎百分之九十的服务器市场都被Linux占据。接下来我们来聊聊Linux的发展史。 简单的说:Linux操作系统是1998年的8月芬兰的一个叫Linus Torvalds的大学生写出来的一个类minix的系统。 具体分析: Lin…

    Linux干货 2016-10-17
  • Linux文本处理工具

    知识框架图 学习笔记 查看文本 查看文本内容 cat -A:显示控制符 -E:显示行结束符$ -n:打印行号,显示空行 -b:打印行号,空行不编号 -s:压缩连续空白行 tac:反向查看文件内容 rev:文本每行倒序显示 分页查看 more less 查看文件头尾内容 head -c:前n个字节 -n:前n行 tail -c -n -f:跟踪显示文件变化,常…

    2018-03-17
  • Linux系统上的人机交互

    众所周知,计算机上运行的数据流最后都会以二进制的方式流转,这对计算机来说确实没什么问题,但是对人类来说,这样的方式无疑太难理解,所以计算机通过转换,将二进制的0、1字符串转换成人们可以易于理解的字母和数字,来方便计算机与人类的沟通和交互。这样一来,人类可以读取和输入人类习惯的字母和数字;而计算机可以使用自己的0、1字符串接收任务和返回结果。然而,这一过程就少…

    Linux干货 2017-09-01
  • 揭开链接文件的面纱——从根本上剖析硬链接与软链接异同

    在linux的学习过程中,链接文件的学习让不少人头疼,很多同学往往分不清什么是硬链接,什么是软链接,对于两者的概念和区别常常容易混淆、搞不清楚。今天我们就从原理、从根本上为大家辨析一些两者之间的区别,相信大家在看完这篇文章之后对链接文件会有一个清晰正确的认识。 1、在实现原理上不同 硬链接,涉及到文件的底层模式,因此被称为硬链接文件。硬链接文件只是一个指针指…

    Linux干货 2016-10-20
  • Linux 网络管理

    Linux 网络管理 第一篇:计算机网络基础: 一、计算机网络: 1.TCP/IP:协议栈(使用中的模型)     ISO(国际标准化组织):OSI(开放系统互联基本参考模型),学习中的模型。           1)各层之间的相关协议和单位:     互联网…

    Linux干货 2016-09-06
  • Bonding多块网卡绑定同一IP地址

    Bonding多块网卡绑定同一IP地址 就是将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。当然,直接给两块网卡设置同一IP地址是不可能的。通过bonding,虚拟一块网卡对外提供连接,物理网卡的被修改为相同的MAC地址。 一共有七种模式这里提供三种常用的:   一、Mode 0 (balance-rr)  轮转( Round-robin…

    Linux干货 2016-09-07

评论列表(1条)

  • 马哥教育
    马哥教育 2016-09-26 13:29

    文章实操性很强,每一步都很明确,整个实验过程很流畅,赞一个。