使用openssl為localhost創建自簽名

文章目錄

  • 自簽名
    • 生成命令
    • 安裝
      • 安裝證書
      • 瀏覽器證書管理器

自簽名

生成命令

使用openssl生成私鑰和證書。

openssl req -x509 -newkey rsa:4096 -nodes  -days 365 -subj "/CN=localhost" -addext "subjectAltName=DNS:localhost" -keyout cert.key -out cert.crt
# or
openssl req -x509 -newkey rsa:2048 -nodes -days 365 -sha256 -subj '/CN=localhost'  -addext "subjectAltName=DNS:localhost"   -keyout private-key.pem -out certificate.pem
  • -x509 :生成自簽名證書
  • -newkey rsa:4096 :生成 4096 位 RSA 密鑰
  • -keyout :指定私鑰輸出路徑
  • -out :指定證書輸出路徑
  • -days 365 :證書有效期 365 天
  • -nodes :不加密私鑰
  • -subj "/CN=localhost" :設置證書主題為 localhost
  • -addext "subjectAltName=DNS:localhost":配置SAN擴展

如果提示subject name格式不正確,就修改-subj "//CN=localhost",多加一個/

subjectAltName配置很重要,瀏覽器需要確保訪問的 URL 和證書中的CN/SAN完全匹配

配置好之后,應該會在當前目錄生成cert.keycert.crt兩個文件或private-key.pemcertificate.pem兩個文件。

安裝

如果要讓瀏覽器正確識別有兩種方法:安裝證書瀏覽器證書管理器

安裝證書

雙擊cert.crt后點擊安裝證書或右擊cert.crt選擇安裝證書。
安裝證書
將證書存儲為受信任的根證書頒發機構

瀏覽器證書管理器

在瀏覽器中可以導入自定義證書。
可以在瀏覽器設置中直接搜索證書,一般在隱私安全下面可以找到管理證書
下面分別是ChromeEdge的管理證書。
管理證書
管理證書
谷歌瀏覽器還支持自定義導入,不需要安裝證書到系統,只需要導入即可識別。
自定義導入
也可以選擇管理系統導入的證書。
管理證書
點擊導入,選擇證書文件cert.crt,選擇證書存儲在受信任的根證書頒發機構
安裝證書
安裝完成后開始測試。

導入證書之前:
不安全
導入證書之后:
安全
可以看到證書生效了。

使用 node 創建簡單的服務器測試代碼。

import express from 'express'
import https from 'node:https'
import fs from 'node:fs'
import path from 'node:path'const app = express()// 加載SSL證書,使用`cert.key, cert.crt`或者`private-key.pem, certificate.pem`
const sslOptions = {key: fs.readFileSync(path.resolve('D:/OpenSSL/ca', 'cert.key')),cert: fs.readFileSync(path.resolve('D:/OpenSSL/ca', 'cert.crt'))
}app.use(express.static(import.meta.dirname))// 創建HTTPS服務器
const server = https.createServer(sslOptions, app)server.listen(3000, () => {console.log('HTTPS 服務啟動成功,端口: 3000')
})

如果運行報錯:ERR_OSSL_X509_KEY_VALUES_MISMATCH,這表明證書秘鑰不匹配。

首先確認證書和秘鑰是否匹配:

openssl x509 -noout -modulus -in cert.crt | openssl md5 && \
openssl rsa -noout -modulus -in cert.key | openssl md5

如果哈希值不匹配需要重新生成證書和秘鑰。如果問題還存在,那可能需要完全刪除舊證書并重新生成。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/77888.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/77888.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/77888.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

AI編程助手Cline之快速介紹

Cline 是一款深度集成在 Visual Studio Code(VSCode) 中的開源 AI 編程助手插件,旨在通過結合大語言模型(如 Claude 3.5 Sonnet、DeepSeek V3、Google Gemini 等)和工具鏈,為開發者提供自動化任務執行、智能…

1.微服務拆分與通信模式

目錄 一、微服務拆分原則與策略 業務驅動拆分方法論 ? DDD(領域驅動設計)中的限界上下文劃分 ? 業務功能正交性評估(高內聚、低耦合) 技術架構拆分策略 ? 數據層拆分(垂直分庫 vs 水平分表) ? 服務粒…

Element Plus表格組件深度解析:構建高性能企業級數據視圖

一、架構設計與核心能力 Element Plus的表格組件(el-table)基于Vue 3的響應式系統構建,通過聲明式配置實現復雜數據渲染。其核心設計理念體現在三個層級: 數據驅動:通過data屬性綁定數據源,支持動態更新與…

07前端項目----面包屑

面包屑 效果實現代碼全局事件總線-$bus 效果 實現代碼 上節searchParams中參數categoryName是表示一二三級分類所點擊的列表名 <!--bread面包屑--> <div class"bread"><ul class"fl sui-breadcrumb"><li><a href"#"…

kafka jdbc connector適配kadb數據實時同步

測試結論 源端增量獲取方式包括&#xff1a;bulk、incrementing、timestamp、incrementingtimestamp&#xff08;混合&#xff09;&#xff0c;各種方式說明如下&#xff1a; bulk: 一次同步整個表的數據 incrementing: 使用嚴格的自增列標識增量數據。不支持對舊數據的更新…

基于Hadoop的音樂推薦系統(源碼+lw+部署文檔+講解),源碼可白嫖!

摘要 本畢業生數據分析與可視化系統采用B/S架構&#xff0c;數據庫是MySQL&#xff0c;網站的搭建與開發采用了先進的Java語言、爬蟲技術進行編寫&#xff0c;使用了Spring Boot框架。該系統從兩個對象&#xff1a;由管理員和用戶來對系統進行設計構建。主要功能包括&#xff…

CentOS的安裝以及網絡配置

CentOS的下載 在學習docker之前&#xff0c;我們需要知道的就是docker是運行在Linux內核之上的&#xff0c;所以我們需要Linux環境的操作系統&#xff0c;當然了你也可以選擇安裝ubuntu等操作系統&#xff0c;如果你不想在本機安裝的話還可以考慮買阿里或者華為的云服務器&…

【條形碼識別改名工具】如何批量識別圖片條形碼,并以條碼內容批量重命名,基于WPF和Zxing的開發總結

批量圖片條形碼識別與重命名系統 (WPF + ZXing)開發總結 項目適用場景 ??電商商品管理??:批量處理商品圖片,根據條形碼自動分類歸檔??圖書館系統??:掃描圖書條形碼快速建立電子檔案??醫療檔案管理??:通過藥品條形碼整理醫療圖片資料??倉儲管理??:自動化識…

RAGFlow安裝+本地知識庫+踩坑記錄

RAGFlow是一種融合了數據檢索與生成式模型的新型系統架構&#xff0c;其核心思想在于將大規模檢索系統與先進的生成式模型&#xff08;如Transformer、GPT系列&#xff09;相結合&#xff0c;從而在回答查詢時既能利用海量數據的知識庫&#xff0c;又能生成符合上下文語義的自然…

android liveData observeForever 與 observe對比

LiveData 是一個非常有用的組件,用于在數據變化時通知觀察者。LiveData 提供了兩種主要的觀察方法:observe 和 observeForever。這兩種方法在使用場景、生命周期感知以及內存管理等方面有所不同。 一、observe 方法?? ??1. 基本介紹?? ??生命周期感知??:observe…

web-ssrfme

一、題目源碼 <?php highlight_file(__file__); function curl($url){ $ch curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_HEADER, 0);echo curl_exec($ch);curl_close($ch); }if(isset($_GET[url])){$url $_GET[url];if(preg_match(/file…

企業AI應用模式解析:從本地部署到混合架構

在人工智能快速發展的今天&#xff0c;企業如何選擇合適的大模型應用方式成為了一個關鍵問題。本文將詳細介紹六種主流的企業AI應用模式&#xff0c;幫助您根據自身需求做出最優選擇。 1. 本地部署&#xff08;On-Premise Deployment&#xff09; 特點&#xff1a;將模型下載…

OpenCV 圖形API(49)顏色空間轉換-----將 NV12 格式的圖像數據轉換為 BGR 顏色空間函數NV12toBGR()

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 將圖像從NV12&#xff08;YUV420p&#xff09;顏色空間轉換為BGR。 該函數將輸入圖像從NV12顏色空間轉換為RGB。Y、U和V通道值的常規范圍是0到25…

【java實現+4種變體完整例子】排序算法中【桶排序】的詳細解析,包含基礎實現、常見變體的完整代碼示例,以及各變體的對比表格

以下是桶排序的詳細解析&#xff0c;包含基礎實現、常見變體的完整代碼示例&#xff0c;以及各變體的對比表格&#xff1a; 一、桶排序基礎實現 原理 將數據分到有限數量的桶中&#xff0c;每個桶內部使用其他排序算法&#xff08;如插入排序或快速排序&#xff09;&#xf…

Linux[基本指令]

Linux[基本指令] pwd 查看當前所處的工作目錄 斜杠在Linux中作為路徑分割符 路徑存在的價值為了確定文件的唯一性 cd指令 更改路徑 cd 你要去的路徑(直接進入) cd . 當前目錄 cd . . 上級目錄(路徑回退) 最后的’/為根目錄(根節點) Linux還是window的目錄結構都是樹狀…

git -- 對遠程倉庫的操作 -- 查看,添加(與clone對比),抓取和拉取,推送(注意點,抓取更新+合并的三種方法,解決沖突,對比),移除

目錄 對遠程倉庫的操作 介紹 查看 (git remote) 介紹 查看詳細信息 添加(git remote add) 介紹 與 git clone對比 從遠程倉庫中抓取與拉取 抓取(git fetch) 拉取(git pull) 推送(git push) 介紹 注意 抓取更新合并的方法 git fetch git merge 解決沖突 git …

vue3 excel文件導入

文章目錄 前言使用在vue文件中的使用 前言 最近寫小組官網涉及到了excel文件導入的功能 場景是導入小組成員年級 班級 郵箱 組別 姓名等基本信息的excel表格用于展示各組信息 使用 先下載js庫 npm install xlsx為了提高代碼的復用性 我將它寫成了一個通用的函數 import ap…

Docker環境下SpringBoot程序內存溢出(OOM)問題深度解析與實戰調優

文章目錄 一、問題背景與現象還原**1. 業務背景****2. 故障特征****3. 核心痛點****4. 解決目標** 二、核心矛盾點分析**1. JVM 與容器內存協同失效****2. 非堆內存泄漏****3. 容器內存分配策略缺陷** 三、系統性解決方案**1. Docker 容器配置**2. JVM參數優化&#xff08;容器…

【PGCCC】Postgres MVCC 內部:更新與插入的隱性成本

為什么 Postgres 中的更新操作有時感覺比插入操作慢&#xff1f;答案在于 Postgres 如何在后臺管理數據版本。 Postgres 高效處理并發事務能力的核心是多版本并發控制&#xff08;MVCC&#xff09;。 在本文中&#xff0c;我將探討 MVCC 在 Postgres 中的工作原理以及它如何影響…

Docker使用、容器遷移

Docker 簡介 Docker 是一個開源的容器化平臺&#xff0c;用于打包、部署和運行應用程序及其依賴環境。Docker 容器是輕量級的虛擬化單元&#xff0c;運行在宿主機操作系統上&#xff0c;通過隔離機制&#xff08;如命名空間和控制組&#xff09;確保應用運行環境的一致性和可移…