日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

https证书互信解决方案—创建私有CA并申请证书

發布時間:2023/12/10 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 https证书互信解决方案—创建私有CA并申请证书 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

https相較于http而言有很大的安全性,當我們一個服務開啟https并與之通信時,往往需要證書的認證,如果是瀏覽器訪問服務,只要在瀏覽器內設置信任證書即可,而如果是程序內訪問服務(如java程序),則需要導入該服務的證書所信任的證書。

實際情況中,內部系統的互相通信使用https,往往不可能向公有CA申請證書(申請證書需要很高的費用),故我們需要創建一個私有CA來申請證書實現https通信。

名詞介紹

CA和證書認證

詳見我的一篇博文:https簡單解讀

實現步驟

環境介紹

  • 64位 centos 7.X操作系統
  • 裝有openssl命令
  • 構建私有CA

    CA要給別人簽發證書,首先自己得有一個作為根證書,我們得在一切工作之前修改好CA的配置文件、序列號、索引等等。

    輸入以下命令更改配置文件:

    vi /etc/pki/tls/openssl.cnf

    配置文件更改以下部分:

    [ CA_default ]dir = /etc/pki/CA # Where everything is kept 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 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 RANDFILE = $dir/private/.rand # private random number file ... default_days = 3650 # how long to certify for ... # For the CA policy [ policy_match ] countryName = match stateOrProvinceName = optional localityName = optional organizationName = optional organizationalUnitName = optional commonName = supplied emailAddress = optional

    在/etc/pki/CA目錄創建兩個文件index.txt和serial:

    cd /etc/pki/CA && touch index.txt serial && echo 01 > serial

    仍在當前目錄下生成一個CA私鑰cakey.pem和自簽證書cacert.pem:

    openssl genrsa -out private/cakey.pem 2048 openssl req -new -x509 -key private/cakey.pem -out cacert.pem

    生成公鑰的時候會提示輸入一些信息,例子如下:

    Country Name (2 letter code) []:CN #國家名 State or Province Name (full name) []:hangzhou #省份名 Locality Name (eg, city) []:hangzhou #地名 Organization Name (eg, company) []:company #公司名 Organizational Unit Name (eg, section) []:unit #部門名 Common Name (eg, your websites domain name) []:localhost #服務域名 Email Address []: #電子郵件

    后面一些信息可按回車略過

    這里比較重要的是Comman Name填寫的是服務的域名地址,即如果該證書用于某個服務則填該服務的域名地址(如用于百度服務器,則填寫www.baidu.com)

    本方案的CA證書不用于某個服務,故可填localhost

    私有CA簽署證書

    為一個服務生成私鑰server.key和一個證書請求文件server.csr:

    openssl genrsa -out server.key 2048 openssl req -new -key server.key -out server.csr

    生成證書請求文件時,仍會提示輸入一些信息,例子如下:

    Country Name (2 letter code) []:CN #國家名 State or Province Name (full name) []:hangzhou #省份名 Locality Name (eg, city) []:hangzhou #地名 Organization Name (eg, company) []:company #公司名 Organizational Unit Name (eg, section) []:unit #部門名 Common Name (eg, your websites domain name) []:XXX.XXX.XXX #服務域名 Email Address []: #電子郵件

    這里的Common Name就應該填你實際服務所用的域名了

    下面將該證書請求文件server.csr由你構建的私有CA簽署,生成一個server.crt證書:

    openssl x509 -req -in server.csr -CA /etc/pki/CA/cacert.pem -CAkey /etc/pki/CA/private/cakey.pem -CAcreateserial -out server.crt

    到此為止,server.crt證書可用于服務提供https訪問,客戶端若想訪問該服務,導入CA根證書cacert.pem即可。

    總結

    以上是生活随笔為你收集整理的https证书互信解决方案—创建私有CA并申请证书的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。