让自己的主机成为证书颁发机构


        在互联网的世界里证书就是我们在这个网络世界的“×××”,通过这个“×××”我们来证明自己的真实性,判断对方的真 实性,以防冒名顶替对我们造成巨大的损失,比如我们的网银,就需要证书的认证,等等....因此这个网络世界的“
×××”即证书是必不可少的,除此之外,证书还有加密,解密的功能,也就是说没有证书,你就是在网上“裸奔”
        既然证书这么重要,我们怎么获得这个证书呢?
        在国际上有个第三方、世界公认的证书管理机构(CA),专门负责证书的发放和管理,这个世界公认的机构给需要证书的发放和管理证书,当看到对方的证书的时候,我们就可以确定对方的身份。当然这个机构并不是慈善机构,不是
 免费的发放和管理证书,与之相反证书的使用费用是相当昂贵的,像我们这些平头老百姓来说是难以承受的开支,所以CA发放的证书主要的对象主要是一些大型的网络或商业公司,来进行安全升级,以防有人冒名窃取机密或进行破坏
         有人就问了,我的网银也是需要证书的,难道这个证书就不是CA颁发的吗?这个证书是由我们网银所属银行内部颁发的,通过这个证书,银行就能确定你的身份。在这里证书是为获取行为发起人身份的确认,在一定只要能确定你身份的证书就是有用的证书,我们完全没有必要为了获取银行对我们身份的认证而承担CA昂贵的费用。
          因此,如果我们想要在局域网内架设主机,同时又想对登陆的用户进行身份的验证,以防恶徒冒名登录服务器盗取机密或搞破坏,我们完全可以把自己当作“银行内部”向每个我们信任的“客户”发放一个证书,这样我们可以获得登录者的身份认证,以防不被我们信任的人登录主机,此时我们就摇身一变,称为了我们服务器的“CA”,当然这个理论是可行的,但是要怎样让自己成为CA呢?下面我就给大家一一道来。


       在这里我们要用到一个工具openssl,许多版本的linux上都自带的有这个工具。
       1、我们要进入让自己主机称为CA的必须的工作环境进/etc/pki/CA目录,这个是必须的。 
      2、进入工作目录之后,就开始进行工作了。
            先给自己生成私钥cakey.pem ,并且把生成的私钥放在/etc/pki/CA/privat 目录中,生成私钥的命令如下:
          (umask 66; openssl genrsa 2048 > private/cakey.pem)
          注释:括号表示当前命令在子shell下运行,对全局不产生影响
                       umask 66是将创建的私钥文件的属组和其他用户权限减少6,来保证私钥的安全
                       genrsa 生成rsa类型的私钥
                       2048 是指生成密钥的长度(可以选择的长度有1024、2048、4096....)
                       private/cakey.pem指私钥的名字为cakey.pem 存放在private目录下
             现在我们主机的私钥已经生成。                                                 
      3、生成字签证书,也就是说让我们的主机给自己先颁发一个证书,来向其他人证明自己是合法的CA,命令如下:
            openssl rep -new -x509 -key private/cakey.pem -out cacert.pem -days 3650  名字固定
            注释:rep 是openssl的子命令,用来进行证书申请的         
                        -x509 指生成一个自签证书
                        -key 指定使用哪个目录下的哪个私钥来生成证书
                        -out 生成,后加证书的名字。
                        -days 指定证书的有效时间,单位为天
               特别注意:这证书的名字最好是cakey.pem因为我们CA的配置文件中都是以这个名字为默认名字,否则将进行   大量相应的修改。                          
              输完这个命令之后将显示一个个的选项让你进行填写,国家的名字为两个大写字符:CN
               其他根据自己情况填写
              但是Common Name (eg, your name or your server's hostname) []:这项必须填写为你将要使用的服务器的名字,只有使用这个名字的时候,CA才会起作用。
      4、对自己刚刚成立的CA机构进行基本完善和相应的配置
             首先编辑文件/etc/pki/tls/openssl.cnf        
                找到[CA _ default ]中的
                 dir             =     将自己的证书的存放的实际路径即名字填上,其他选项对应进行修改
              其次在CA目录中 mkdir certs  newcerts crl 创建这些目录,为以后管理用户的证书所用。
               最后    创建文件:index.txt    serial
                            echo  01 > serial   将第一个序号写入其中
    至此,我们的CA就创建成功了,当其他用户发送×××请求的时候我们就可以对其进行证书的颁发了!!
            颁发证书的命令:openssl ca -in name -out name.crt
                注释:name为用户发送请求中密钥的名字 ,保存的证书必须以.crt结尾
     
      好了,我们的CA已经完全建立成功了,大家可以参照以上的步骤感受一下CA的特权了!