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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

CA证书制作实战

發(fā)布時間:2023/12/3 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CA证书制作实战 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

需求:

????????自建CA 頒發(fā)證書

使用自簽名證書來構建安全網(wǎng)絡,所謂自簽名證書,就是自己扮演 CA 機構,自己給自己的服務器頒發(fā)證書。

1、OpenSSL

????????OpenSSL是一個以C語言編寫現(xiàn)了SSL與TLS協(xié)議的開源的軟件庫包,應用程序可以使用這個包來進行安全通信,避免竊聽,同時確認另一端連線者的身份。這個包廣泛被應用在互聯(lián)網(wǎng)的網(wǎng)頁服務器上。OpenSSL支持Linux、Windows、BSD(Unix的衍生系統(tǒng))、Mac等平臺,這使得OpenSSL具有廣泛的適用性。?

OpenSSL整個軟件包大概可以分成三個主要的功能部分:

  • 加密算法庫
    • 對稱加密算法:
    • 非對稱加密算法
    • 信息摘要算法
  • SSL協(xié)議庫
    • OpenSSL實現(xiàn)了SSL協(xié)議的SSLv2和SSLv3,支持了其中絕大部分算法協(xié)議
    • OpenSSL也實現(xiàn)了TLSv1.0+
  • 應用程序
    • 多功能的命令行工具,可以實現(xiàn)加密解密、密鑰生成、密鑰和證書管理、自建CA和簽名等功能?

2、過程

  • CA生成根密鑰
  • CA生成根證書
  • Nginx生成私鑰
  • Nginx申請證書
  • CA簽發(fā)
  • Nginx安裝證書,配置
  • 3、頒發(fā)證書

    默認情況下Linux操作系統(tǒng)已經(jīng)內(nèi)置安裝了OpenSSL,可以通過openssl version 查看版本號

    ????????但是在使用前,需要注意下當前OpenSSL的庫的版本,因為版本1.0.1是一個很重要的風水嶺版本,1.0.1是第一個支持TLS1.1和1.2的版本。

    修改配置:

    在CA目錄下創(chuàng)建兩個初始文件,維護序列號。通過CA機構簽發(fā)的每個證書都有一個唯一的序列號。

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

    生成根密鑰

    表示的CA機構的私鑰,CA結構簽發(fā)的每一個證書都要通過自己的私鑰進行簽名。

    cd /etc/pki/CA
    #生成一個2048位的密鑰
    openssl genrsa -out private/cakey.pem 2048

    生成根證書

    使用req命令生成自簽證書

    • -new:表示新的申請
    • -x509:表示生成自簽證書
    • -key:指定私鑰文件
    • -out:保存證書的位置
    • -days:指定證書期限

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

    會提示輸入一些內(nèi)容,因為是私有的,所以可以隨便輸入(之前修改的openssl.cnf會在這里呈現(xiàn)),最好記住能與后面保持一致。上面的自簽證書cacert.pem 應該生成在/etc/pki/CA 下。

    為我們的Nginx服務器生成SSL密鑰

    環(huán)境:
    ????????192.168.200.16 CA機構服務器
    ????????192.168.200.16 Nginx服務器
    申請SSL證書本質(zhì)上就是服務器升級支持HTTPS,非對稱加密(公鑰和私鑰)。
    以上都是在CA服務器上做的操作,而且只需進行一次,現(xiàn)在轉(zhuǎn)到nginx服務器上執(zhí)行:

    安裝Nginx

    #1.安裝該rpm rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-releasecentos-7-0.el7.ngx.noarch.rpm #安裝該rpm后,我們就能在/etc/yum.repos.d/ 目錄中看到一個名為nginx.repo 的文件。 #2.安裝完Nginx源后,就可以正式安裝Nginx了。 yum install -y nginx #3.查看所在目錄 whereis nginx

    cd /etc/nginx/ssl
    #為我們的nginx web服務器生成ssl密鑰
    openssl genrsa -out nginx.key 2048

    為nginx生成證書簽署請求

    該過程會生成一個文件,包含了證書相關的信息,但是該文件不是證書,生成證書的請求文件。

    該文件需要發(fā)送給CA機構,由CA簽名后生成一個證書文件。

    openssl req -new -key nginx.key -out nginx.csr
    ...
    Country Name (2 letter code) [AU]:CN
    State or Province Name (full name) [Some-State]:GD
    Locality Name (eg, city) []:SZ
    Organization Name (eg, company) [Internet Widgits Pty
    Ltd]:COMPANY
    Organizational Unit Name (eg, section) []:IT_SECTION
    Common Name (e.g. server FQDN or YOUR name)
    []:your.domain.com
    Email Address []:
    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:
    An optional company name []:
    ...

    同樣會提示輸入一些內(nèi)容,其它隨便,除了Commone Name 一定要是你要授予證書的服務器域名或主機名,challenge password不填。

    私有CA根據(jù)請求來簽署證書

    接下來要把上一步生成的證書請求csr文件,發(fā)到CA服務器上,在CA上執(zhí)行:

    openssl ca -in nginx.csr -out nginx.crt

    ????????上面簽發(fā)過程其實默認使用了-cert cacert.pem -keyfile cakey.pem ,這兩個文件就是前兩步生成的位于/etc/pki/CA 下的根密鑰和根證書。將生成的crt證書發(fā)回nginx服務器使用。?

    ????????到此我們已經(jīng)擁有了建立SSL安全連接所需要的所有文件,并且服務器的crt和key都位于配置的目錄下,剩下的是如何使用證書的問題。

    4、使用 SSL證書

    Nginx 使用 SSL 證書

    ????????在本地安裝完成證書(在Nginx服務器配置)也就意味著Java Web應用已經(jīng)完成了從http到https協(xié)議的升級

    ????????以 Nginx 為例,在 Nginx 中新建ssl文件夾,將生成的crt和key放入其中,配置文件中加入以下代碼:

    #修改Nginx的配置文件,安裝SSL證書 cd /etc/nginx/conf.d vi default.conf listen 443 ssl http2;#https協(xié)議監(jiān)聽的端口號是443端口,基于http2進行工作的。 ssl_certificate /etc/nginx/ssl/nginx.crt; # 指向 ssl文件夾中的 crt 文件 ssl_certificate_key /etc/nginx/ssl/nginx.key; # 指向ssl 文件夾中的 key 文件 ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #啟用false start加速 ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL; ssl_prefer_server_ciphers on;

    啟動Nginx

    #切換到可執(zhí)行目錄
    cd /usr/sbin/
    ./nginx
    #查看啟動狀態(tài)

    ps -ef|grep nginx?

    訪問測試

    curl https://192.168.200.21

    ????????但是,我們自己簽發(fā)的證書,是不受其他服務器信任的,當發(fā)起 curl 請求時,會出現(xiàn)以下情況:證書無效或無法驗證錯誤。這時候,我們就需要將我們 CA 服務器的根證書導入到這臺服務器中。?

    添加證書:

    #安裝 ca-certificates package: yum install ca-certificates #啟用dynamic CA configuration feature: update-ca-trust force-enable #將證書文件放到 /etc/pki/ca-trust/source/anchors/ 目錄下 mv /etc/pki/CA/cacert.pem /etc/pki/ca-trust/source/anchors/ #執(zhí)行更新: update-ca-trust extract

    修改本地host文件

    cd /etc
    vi hosts

    127.0.0.1 localhost localhost.localdomain localhost4localhost4.localdomain4
    ::1 localhost localhost.localdomain localhost6localhost6.localdomain6
    192.168.200.21 yj.com #添加的字段

    訪問測試

    curl https://yj.com

    總結

    以上是生活随笔為你收集整理的CA证书制作实战的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。