使用SVS實作簽名驗證
前言
最近開發了一個介面由于是給外部其他系統的呼叫的,所以為了介面安全性,我們需要選擇一個符合業務需求的請求機制,根據和合作方的協商,我們決定采用了SVS簽名驗證的方式來保證介面的安全性,
正文
數字簽名
數字簽名指的是只有資訊的發送者才能產生的別人無法偽造的一段數字串,這段數字串同時也是對資訊的發送者發送資訊真實性的一個有效證明,
它的基本原理是將原文用對稱密鑰加密傳輸,而將對稱密鑰用收方公鑰加密發送給對方,收方收到電子信封,用自己的私鑰解密信封,取出對稱密鑰解密得原文,
使用svs實作簽名驗證的基本流程
第一步:獲取證書資訊
證書資訊的來源有2種:
- 采用證書通過
SSL方式訪問應用系統,SSL在登錄時已經獲取了證書資訊,然后把資訊保存在COOKIE中,SVS需要簽名時,直接從COOKIE中取出資訊就可以了, - 呼叫
SVS簽名控制元件獲得證書資訊(第一次使用需要從IE中安裝ACTIVE控制元件),
第二步:呼叫證書的私鑰對需要簽名的原文進行簽名
簽名其實也就是一種加密方式,采用MD5或者SHA1的加密方式把用戶的原文和證書的資訊生成一段加密資訊(包括PKCS7簽名、attached簽名、detached簽名和普通簽名),然后保存倒資料庫中作為記錄,
第三步:驗證簽名
把簽名資訊取出來,采用相應的解密方法解密,獲得證書資訊和原文(在這個程序中不需要證書),
HTTPS請求
我們在實際的應用程序中最常用的數字加密就是將HTTP轉化成HTTPS請求,首先我們先了解一下HTTPS和HTTP的區別:
HTTPS協議需要到ca申請證書,一般免費證書較少,因而需要一定費用,HTTP是超文本傳輸協議,資訊是明文傳輸,HTTPS則是具有安全性的ssl加密傳輸協議,HTTP和HTTPS使用的是完全不同的連接方式,用的埠也不一樣,前者是80,后者是443,HTTP的連接很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網路協議,比HTTP協議安全,

Https 請求/回應機制流程
- 客戶端發起請求
- 客戶端發送 驗證包:
Client.random亂數、session ID、密文族(告訴服務自己加密方式)、Server_name - 服務器接收 驗證包:
sever.random隨機碼、session ID、服務器選擇一個密文組 Certificate,服務器發送證書, 數字證書:簽發機構、過期時間、主體名稱、公共密鑰資訊、指紋資訊等待- 服務器發送結束
- 客戶端驗證:客戶端從內置的
CA根證書獲取C.pub,對服務器發送來的數字證書進行驗簽如果驗證成功,會生成pre-master - 客戶端根據之前的:
Client.random+sever.random+pre-master生成對稱密鑰將對稱秘鑰發送給服務器端,最后使用對稱秘鑰進行通信
這里我們以阿里云服務器nginx配置openSSL實作HTTPS請求為例
第一步:下載nginx安裝包,并放在指定位置
Nginx安裝包下載地址
第二步:安裝openSSL模塊
[root@ns3 ~]# systemctl stop firewalld
[root@ns3 ~]# iptables -F
[root@ns3 ~]# setenforce 0
[root@ns3 ~]# yum -y install pcre zlib pcre-devel zlib-devel
[root@ns3 ~]# tar xf nginx-1.16.0.tar.gz -C /usr/local/
[root@ns3 ~]#cd /usr/local/nginx-1.16.0
[root@ns3 ~]#./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module&&make && make install #后續需要的模塊一次性安裝
第三步:從阿里云申請兩個對應的檔案 XXX.key和XXX.pem,找到目錄 /usr/local/nginx/conf 創建 cert 目錄,將兩個檔案復制進去

第四步:配置nginx.conf,并啟動nginx
server {
listen 80;
server_name 域名.com;
# ssl
listen 443;
ssl on;
ssl_certificate cert/剛剛復制的檔案名稱.pem;
ssl_certificate_key cert/剛剛復制的檔案名稱.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
root /root/project/ss;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
第五步:在阿里云的安全策略中開放443埠

第六步:驗證


CSDN認證博客專家
Java
Redis
架構
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/23082.html
標籤:AI
上一篇:想了解壓力變送器嗎?快進!
