首页
/
每日頭條
/
科技
/
pythonhttps雙向認證
pythonhttps雙向認證
更新时间:2025-12-23 06:26:12
背景

1、使用jdk自帶Keytool tomcat項目http轉單向https

2、使用Keytool生成雙向https證書提供請求工具類

3、安裝生成的雙向https證書詳細步驟少走彎路

pythonhttps雙向認證(使用Python寫一個可視化生成https證書的小工具)1

上面的三個文章值之前分享的生成單向和雙向https證書已經證書安裝的詳細步驟。

但是生成的步驟比較繁瑣,每次要手動收入很多命令,一不小心錯了還有從來。

工作中項目安裝的地點也比較多每次的IP地址也不一樣,所以想着做一個一勞永逸的小工具。

環境準備
  1. 電腦中已經安裝jdk并配置好環境變量
  2. 電腦中安裝Python3
  3. 安裝Python中的一個模塊eel

關于Python的學習有興趣的可以看之前分享的彙總文章(傳送門)。

pythonhttps雙向認證(使用Python寫一個可視化生成https證書的小工具)2

部分源碼展示

開發中主要用到的技術 Python3 eel html 。下面展示的是後端源碼有詳細的注釋,全部的源碼和完整的一個https.exe的軟件私:https下載。如果自己不想了解這些可以直接使用裡面我做好的小工具。已經打好exe的可執行軟件,詳細的打包方法完整源碼中都已提供。

#!/usr/bin/python3 # -*- encoding: utf-8 -*- __author__ = 'select957' __wei_xin_gong_zhong_hao__ = '快樂學習與分享' import os import eel import time import subprocess key_path = 'C:\key' # 檢查目錄 def check_dir_path(): file_names = ('clientcert.cer', 'clientcert.p12', 'server.cer', 'server.keystore') exists = os.path.exists(key_path) if exists: for file in os.listdir(key_path): if file in file_names: os.remove(key_path '\\' file) else: os.mkdir(key_path) # 生成證書 def create_key(expiration_date, ip_or_ym, cn, pwd): check_dir_path() # 1、生成服務器證書庫 a = 'keytool -validity {expiration_date} -genkey -v -alias servercert -keyalg RSA -ext SAN={ip_or_ym} -keystore ' \ '{key_path}\server.keystore -dname CN={cn},OU=server,O=server,L=server,ST=server,c=CN -storepass {pwd} ' \ '-keypass {pwd} '.format(expiration_date=expiration_date, key_path=key_path, ip_or_ym=ip_or_ym, cn=cn, pwd=pwd) # os.system(a) subprocess.run(a, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) time.sleep(0.1) # 2、生成客戶端證書庫 b = 'keytool -validity {expiration_date} -genkeypair -v -alias clientcert -keyalg RSA -storetype PKCS12 -keystore ' \ '{key_path}\clientcert.p12 -dname "CN=client,OU=client,O=client,L=client,ST=client,c=CN" -storepass {pwd} ' \ '-keypass {pwd} '.format(expiration_date=expiration_date, key_path=key_path, pwd=pwd) # os.system(b) subprocess.run(b, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) time.sleep(0.1) # 3、從客戶端證書庫中導出客戶端證書 c = 'keytool -export -v -alias clientcert -keystore {key_path}\clientcert.p12 -storetype PKCS12 -storepass {pwd} ' \ '-rfc -file {key_path}\clientcert.cer '.format(key_path=key_path, pwd=pwd) # os.system(c) subprocess.run(c, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) time.sleep(0.1) # 4、将客戶端證書導入到服務器證書庫(使得服務器信任客戶端證書) d = 'keytool -import -v -alias clientcert -file {key_path}\clientcert.cer -keystore {key_path}\server.keystore ' \ '-storepass {pwd} -noprompt '.format(key_path=key_path, pwd=pwd) # os.system(d) subprocess.run(d, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) time.sleep(0.1) # 5、導出讓客戶端信任的服務器證書 e = 'keytool -keystore {key_path}\server.keystore -export -alias servercert -file {key_path}\server.cer ' \ '-storepass {pwd} '.format(key_path=key_path, pwd=pwd) # os.system(e) subprocess.run(e, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) eel.init('web') @eel.expose def py_submit(data): print(data) cn = data['cn'] pwd = data['pwd'] ip_or_ym = data['ip_or_ym'] expiration_date = data['expiration_date'] create_key(expiration_date, ip_or_ym, cn, pwd) return {'code': 0, 'msg': '證書生成成功請去 C:\key 目錄下獲取。'} # 啟動的函數調用放在最後,port=0表示使用随機端口,size=(寬,高) eel.start('https.html', port=0, size=(560, 400))

pythonhttps雙向認證(使用Python寫一個可視化生成https證書的小工具)3

效果演示

1、拿到軟件後直接雙擊運行即可

pythonhttps雙向認證(使用Python寫一個可視化生成https證書的小工具)4

2、根據你的業務需求,可以選擇使用ip生成也可以選擇域名生成

pythonhttps雙向認證(使用Python寫一個可視化生成https證書的小工具)5

3、這裡證書密碼是服務端證書和客戶端證書密碼設置一樣了

pythonhttps雙向認證(使用Python寫一個可視化生成https證書的小工具)6

4、證書生成完成會提示去相應的目錄獲取

pythonhttps雙向認證(使用Python寫一個可視化生成https證書的小工具)7

5、代碼裡默認将證書生成在C:\key目錄下

pythonhttps雙向認證(使用Python寫一個可視化生成https證書的小工具)8

相信聰明的你已經看懂了吧,非常簡單。

證書安裝和測試

下面是證書的安裝制作了一個動圖。

pythonhttps雙向認證(使用Python寫一個可視化生成https證書的小工具)9

服務端證書的配置

pythonhttps雙向認證(使用Python寫一個可視化生成https證書的小工具)10

啟動服務測試

pythonhttps雙向認證(使用Python寫一個可視化生成https證書的小工具)11

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
微信8.09版本安裝包
微信8.09版本安裝包
微信8.09版本安裝包?2022年7月的一個工作日:7:00你醒了,先打開微信,看是否有新消息要回複然後,穿衣、洗漱、出門坐地鐵,我來為大家科普一下關于微信8.09版本安裝包?以下内容希望對你有幫助!微信8.09版本安裝包2022年7月的一...
2025-12-23
電腦屏幕倒過來了是怎麼回事
電腦屏幕倒過來了是怎麼回事
電腦屏幕倒過來了是怎麼回事?當桌面出現上下颠倒時,恢複桌面的最快方法是按下鍵盤“Ctrl+Alt+up”來恢複桌面方向當然,還有其他選擇然後你可以在彈出窗口中設置“屏幕方向”你隻需要将它設置為橫向第二種方法是右鍵單擊桌面,選擇菜單中的圖形選...
2025-12-23
訊景黑狼6600顯卡質量怎麼樣
訊景黑狼6600顯卡質量怎麼樣
1性能概覽編輯點評:千元A卡終于來了,在新技術加持下,RX6500XT4GB應該有不錯的發揮。注意該卡僅4GB顯存,玩家也不用擔心這張卡會被用于别的用途。在過去的2021年,芯片短缺和某些虛拟金融産品的崛起讓顯卡成為了稀缺産品,大部分遊戲顯...
2025-12-23
電腦節能模式怎麼解除
電腦節能模式怎麼解除
電腦節能模式怎麼解除?在電腦桌面,點擊鼠标右鍵,選擇“個性化”選項點擊“鎖屏界面-屏幕保護程序設置”,今天小編就來說說關于電腦節能模式怎麼解除?下面更多詳細答案一起來看看吧!電腦節能模式怎麼解除在電腦桌面,點擊鼠标右鍵,選擇“個性化”選項。...
2025-12-23
進不良網站後被扣費
進不良網站後被扣費
現今,各大視頻網站如騰訊、愛奇藝、芒果TV等都推出了視頻會員服務。但在開通過程中,很多用戶往往一不小心就會勾選自動續費的選項,在會員到期後自動從微信、支付寶或ApplePay處直接扣費。盡管會有軟件内消息及短信提示即将到期可取消自動扣費,那...
2025-12-23
Copyright 2023-2025 - www.tftnews.com All Rights Reserved