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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

自建CA与签发证书

發布時間:2023/12/31 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 自建CA与签发证书 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

CA

簡介

在加密中,證書頒發機構或證書頒發機構(CA)是頒發數字證書的實體。數字證書通過證書的指定主題來證明公鑰的所有權。這允許其他人(依賴方)依賴簽名或關于與經認證的公鑰對應的私鑰的斷言。CA充當受信任的第三方 -由證書的主體(所有者)和依賴證書的一方信任。這些證書的格式由X.509標準指定。

證書頒發機構的一個特別常見的用途是簽署HTTPS中使用的證書,這是萬維網的安全瀏覽協議。另一個常見用途是由國家政府簽發身份證,用于電子簽名文件。

X.509證書組成

  • 證書
    • 版本號
    • 序列號
    • 簽名算法
    • 頒發者
    • 證書有效期
    • 此日期前無效
    • 此日期后無效
    • 主題
    • 主題公鑰信息
    • 公鑰算法
    • 主題公鑰
      • 頒發者唯一身份信息(可選項)
    • 主題唯一身份信息(可選項)
    • 擴展信息(可選項)
    • 證書簽名算法
    • 數字簽名

自建CA

實驗環境
IP 192.168.253.128
系統 Centos7

openssl的配置文件為/etc/pki/tls/openssl.cnf

下面為截取的部分,對自建CA比較關鍵的一些信息部分

[ CA_default ]dir = /etc/pki/CA # CA存放的目錄 certs = $dir/certs # 保存簽入數字證書的目錄 crl_dir = $dir/crl # 證書吊銷列表存放的目錄 database = $dir/index.txt # 數據庫索引文件 new_certs_dir = $dir/newcerts # 用于存放新證書存放的位置 certs. certificate = $dir/cacert.pem # 自簽證書 serial = $dir/serial # 序列號文件 crlnumber = $dir/crlnumber # 當前crl(證書吊銷列表)序列號 private_key = $dir/private/cakey.pem# CA自己的私鑰[ req ] default_bits = 2048 #生成證書請求用到的私鑰的密鑰長度 default_md = sha256 #證書請求簽名時的單項加密算法 default_keyfile = privkey.pem #默認新創建的私鑰存放位置 distinguished_name = req_distinguished_name #可識別字段

第一部分,自建CA

在確定配置為CA的服務器上生成一個自簽證書,并為CA提供所需要的目錄及文件即可;具體如下

a.生成私鑰,大小為4096bit,因為私鑰是一個很重要的文件,所以權限一定要嚴格,這里用括號是創建子進程,設置umask,不影響當前進程的umask。這里的私鑰文件/etc/pki/CA/private/cakey.pem在配置文件定義了,不能隨便更改

(umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096)

b.生成自簽證書

openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3655

  • -new:生成新證書簽署請求;
  • -x509:生成自簽格式證書,專用于創建私有CA時;
  • -key:生成請求時用到的私有文件路徑;
  • -out:生成的請求文件的路徑;如果自簽操作將直接生成簽署過的證書;
  • -days:證書的有效時長,單位是day;

    c.為CA提供所需的目錄及文件(先查看是否存在,如果存在則不需要創建)

mkdir -pv /etc/pki/CA/{certs,crl,newcerts}

touch /etc/pki/CA/{serial,index.txt}

echo 01 > /etc/pki/CA/serial

創建后的目錄結構

[root@localhost ~]# tree /etc/pki/CA /etc/pki/CA ├── cacert.pem ├── certs ├── crl ├── index.txt ├── newcerts ├── private │ └── cakey.pem └── serial

第二部分,簽發證書

安裝nginx服務這里不是重點,簡單安裝一下
上傳之前下載好的nginx的tar包

cd /usr/local/src/ useradd -M -s /sbin/nologin nginx yum install pcre pcre-devel openssl openssl-devel gcc gcc-devel -y tar -zxf nginx-1.14.0.tar.gz cd nginx-1.14.0 ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --user=nginx --group=nginx make make install PATH="/usr/local/nginx/sbin:$PATH" echo 'PATH="/usr/local/nginx/sbin:$PATH"' > /etc/profile.d/nginx.sh

a.用到證書的主機(這里的主機與CA為相同的服務器)生成私鑰;

mkdir /usr/local/nginx/ssl

cd /usr/local/nginx/ssl

(umask 077; openssl genrsa -out /usr/local/nginx/ssl/nginx.key 2048)

b.生成證書簽署請求

openssl req -new -key /usr/local/nginx/ssl/nginx.key -out /usr/local/nginx/ssl/nginx_ssl.csr -days 365

c.將請求通過可靠方式發送給CA主機(scp或者u盤等都可以)因為我這里都在同一臺主機,所以沒有這個步驟

d.在CA主機上簽署證書;/usr/local/nginx/ssl/nginx_ssl.csr 這個文件是剛才我們生成的證書簽署請求,/usr/local/nginx/ssl/nginx_ssl.crt這個文件是我們需要的證書

openssl ca -in /usr/local/nginx/ssl/nginx_ssl.csr -out /usr/local/nginx/ssl/nginx_ssl.crt

e.查看證書中的信息,驗證一下

openssl x509 -in /usr/local/nginx/ssl/nginx_ssl.crt -noout -serial -subject

第三部分,使用證書

這里用nginx配置

server {listen 443 ssl; ##監聽443端口server_name www.hal.com; ##與證書匹配的域名ssl on; ##允許ssl連接ssl_certificate /usr/local/nginx/ssl/nginx_ssl.crt;#證書的路徑ssl_certificate_key /usr/local/nginx/ssl/nginx.key;#web服務器私鑰路徑ssl_session_cache shared:SSL:1m;ssl_session_timeout 5m;ssl_ciphers HIGH:!aNULL:!MD5;ssl_prefer_server_ciphers on;location / {root html;index index.html index.htm;}}

測試一下配置文件有沒有問題

[root@localhost ssl]# nginx -t nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

關閉防火墻和selinux然后啟動nginx

systemctl stop firewalld setenforce 0 nginx

因為這個域名沒有買,所以需要在本地做一個解析
修改這個目錄C:\Windows\System32\drivers\etc下的hosts文件添加一條記錄

然后用瀏覽器訪問,因為是私人的CA所以瀏覽器提示不安全很正常,這里可以在設置那里將CA的自簽證書導入就可以了,這里不導了

第四部分,吊銷證書(很少用)

a.客戶端獲取要吊銷的證書的serial(在使用證書的主機執行):

openssl x509 -in /usr/local/nginx/ssl/nginx_ssl.crt -noout -serial -subject

b. CA主機吊銷證書

先根據客戶提交的serial和subject信息,對比其與本機數據庫index.txt中存儲的是否一致;

c.吊銷

格式:openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem

其中的SERIAL要換成證書真正的序列號;在吊銷證書的第一步得到的那個serial編碼是01 所以需要變成下面這條命令openssl ca -revoke /etc/pki/CA/newcerts/01.pem

d.生成吊銷證書的吊銷編號(第一次吊銷證書時執行)

echo 01 > /etc/pki/CA/crlnumber

e.更新證書吊銷列表

openssl ca -gencrl -out /etc/pki/CA/newcerts/01.pem

總結

以上是生活随笔為你收集整理的自建CA与签发证书的全部內容,希望文章能夠幫你解決所遇到的問題。

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