密碼學專題 文本數據庫

應用概述

  • 文本數據庫是跟OpenSSL的CA應用程序緊密結合在一起的,它以文本的方式記錄CA已經簽發的證書的狀態和摘要信息。這些狀態信息可以用于跟證書庫相關的一些操作,比如使用ca指令生成CRL主要就是讀取這個文本數據庫的信息作為參考。文本數據庫就是普通的文本文件,在使用之前,需要先建立一個空文件作為文本數據庫,名字和后綴名都是無所謂的。ca指令使用的文本數據庫文件可以在配置文件中指定,相關參數是CA主配置字段的database選項。
  • 默認的文本數據庫文件是index.txt文件,在OpenSSL根目錄的apps/demoCA目錄下,該文件已經包含了OpenSSL提供的演示證書的一些信息。當然,如果你要使用自己的CA證書,那么該文件應該首先清空。上述的初始工作,包括文本數據庫文件的建立等CA目錄結構的構造,可以手動完成,也可以使用OpenSSL的Perl腳本CA.pl完成。
  • OpenSSL提供了管理和讀寫文本數據庫的接口函數,它們都在crypto/txt_db目錄下,函數不多,很容易理解和使用,當然,這是基于你閱讀下面的一節———即你對文本數據庫的結構已經有所了解的基礎上。

數據結構

  • OpenSSL的文本數據庫結構非常簡單,每一行代表一條完整的記錄,每條記錄對應一個已經簽發的證書。一般來說,每條記錄包括六個可選的字段,分別是:證書狀態、證書生效時間、證書到期時間、證書序列號、證書存放路徑及證書的特征名稱(DN)值。其中,證書生效時間是可選項,有些記錄是可以不填寫的。下面是文本數據庫中一條完整記錄

  • 證書狀態字段是文本數據庫記錄中的關鍵字段,也是第一個字段,ca指令產生CRL列表就是根據證書中的狀態信息作為依據的。
  • 狀態字段的可選值有三個,分別是V(Valid),R(Revoked)和E(Expire),代表有效、吊銷和過期三種證書狀態。
  • 依次可知,上述記錄對應的證書狀態是已經吊銷了(R)。
  • 第二個字段是證書到期時間字段,保存的時間已經換算成格林威治時間。時間格式在前面的章節已經介紹過,這里不再重復。在上述的例子中,證書到期的時間是03年11月5日23時32分5秒。
  • 第三個字段是證書生效時間,格式同證書到期時間的格式。證書生效時間是可選的字段,在文本數據庫的記錄中不一定要存在,比如你簽發證書的時候沒有指定生效時間而是使用默認的當前時間作為生效時間,那么在文本數據庫的相應記錄中就不會存在該項。
  • 第四個字段是證書序列號,以十六進制的格式表示。證書庫中的每個證書的序列號都是不同的。
  • 第五個字段是證書存儲路徑,指明了生成的證書存儲的具體位置。該目錄選項有時候可能由于ca指令某些參數使用的原因導致沒有辦法填寫,這時候就標記為“unknown”,但是,這不會影響證書庫的正常使用。如果你在使用ca指令的時候已經指定了證書輸出文件,那么就會標記路徑字段為“unknown”。
  • 第六個字段也是一個重要的字段,就是記錄對應的證書的特征名稱(DN),也即是證書中的主題名。在OpenSSL的文本證書庫中,ca指令要求必須保證簽發的證書具有不同的DN值,否則就不能成功簽發證書,這是因為OpenSSL將DN值作為文本數據庫一個索引。
  • 當然,這種限制跟實際應用的情況可能會有所不同,比如,有些情況下同一個人可能要申請多個證書用于不同的目的,E-mail或者Web訪問,這就會引起矛盾。如果證書吊銷的時候使用了吊銷原因的選項(ca指令的crl_reason選項),那么在被吊銷的證書相應的記錄中,還可能會添加一到兩個字段注明吊銷原因,下面就是兩條使用了吊銷原因的記錄:?

  • 文本數據庫的記錄生成之后,一般來說,以后可能修改的字段就是證書狀態字段,當證書被吊銷后,證書狀態字段會發生改變。對于過期的證書,文本數據庫并不會自動更新,需要使用ca指令的-updatedb選項進行更新,一般來說,在生成CRL之前,都應該使用該選項進行更新。?

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

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

相關文章

Python學習13 異常處理機制

概括 常見的異常 異常處理機制 可以多個異常放在元組里面 一旦產生異常,try后面的語句不會繼續執行,會做異常處理 異常使用場景1 close應該放在finally中 異常使用場景2 finally關鍵字 會執行except后面的,報錯

java 布隆過濾器_牛逼哄哄的布隆過濾器,到底有什么用?

Java技術棧www.javastack.cn打開網站看更多優質文章作者:CodeBear的園子www.cnblogs.com/CodeBear/p/10911177.html本文是站在小白的角度去討論布隆過濾器,如果你是科班出身,或者比較聰明,又或者真正想完全搞懂布隆過濾器的可以移…

密碼學專題 序列號文件

序列號文件是ca指令簽發證書的時候的依據文件之一,它從該文件讀取當前簽發的證書的序列號并將序列號文件中的序列號加1,這樣,就可以確保證書的序論號是遞增的,不會重復。序列號文件也是一個文本文件,里面僅僅簡單包含了…

Java web后端6 java Bean EL表達式

EL表達式和JSTL概述 java Bean規范 java中成員變量使用類Integer private Integer count; java Bean的創建 創建java Bean: BookTest.java package com.example.elandjstl.bean;public class BookTest {//java中成員變量使用類Integerprivate Integer count;private Boolean…

python根須系統斜杠_深入淺出Python中的os模塊

「Author:Runsen」當初學Python的時候,把一些標準庫和第三方開源庫學的七零八落,不成系統,正好趁這個機會來系統的整理一下,先從Python常用的標準庫os開始吧。osOS模塊簡單的來說它是一個Python的系統編程的操作模塊&a…

密碼學專題 隨機數文件

無論使用OpenSSL的指令還是其API,隨機數文件都是會經常碰到的一個概念。大部分密碼算法的安全性都跟隨機數的好壞相關,所以一個成功的密碼學應用軟件,對隨機數的處理是不能隨便的。OpenSSL雖然沒有提供很完美的隨機數生成程序,但是…

Java web后端7JSTL

概括 下載jstl的jar包 官網&#xff1a;https://mvnrepository.com/ 網址1&#xff1a;https://search.maven.org/ 在pomxml中插入依賴&#xff1a; <dependency><groupId>taglibs</groupId><artifactId>standard</artifactId><version>1…

python輸入程序_python程序的輸入輸出(acm的幾個小程序)

#!/usr/bin/env python#codingutf-8 a[]for x inraw_input().split(): a.append(int(x))print sum(a) 下面的代碼只有一行&#xff0c;&#xff0c;可惜不是我想出來的&#xff01;&#xff01;&#xff01;&#xff01;&#xff1a; print sum(int(x) for x in raw_input().sp…

密碼學專題 口令輸入的方式

雖然口令的安全性很值得擔憂&#xff0c;但是口令在OpenSSL中是經常使用的&#xff0c;這是沒有辦法替代的一種簡易的保護數據的方法。OpenSSL中使用口令的地方很多&#xff0c;比如密鑰的加密和解密&#xff0c;等等。OpenSSL的指令提供了多種靈活的口令輸入方法&#xff0c;但…

Python學習14 模塊和包

模塊 公共類、函數都可以放在獨立的文件中&#xff0c;這樣其他多個程序都可以使用&#xff0c;而不必把這些公共性的類、函數等在每個程序中復制一份&#xff0c;這樣獨立的文件就叫做模塊&#xff0c;它們的擴展名為.py 標準庫中的模塊 使用help查看模塊 代碼&#xff1a; …

python語句分為_python以什么劃分語句塊

語句塊是在條件為真&#xff08;條件語句&#xff09;時執行或者執行多次&#xff08;循環語句&#xff09;的一組語句&#xff1b;在代碼前放置空格來縮進語句即可創建語句塊&#xff0c;語句塊中的每行必須是同樣的縮進量&#xff1b;&#xff08;推薦學習&#xff1a;Python…

Python學習15 正則表達式1

網址 正則表達式測試網址&#xff1a;https://regex101.com/ 概述 正則表達式&#xff1a; 正則表達式(Regular Expression)是一種文本模式&#xff0c;包括普通字符&#xff08;例如&#xff0c;a 到 z 之間的字母&#xff09;和特殊字符&#xff08;稱為"元字符"…

STL源碼剖析 空間配置器 查漏補缺

ptrdiff_t含義 減去兩個指針的結果的帶符號整數類型ptrdiff_t (Type support) - C 中文開發手冊 - 開發者手冊 - 云社區 - 騰訊云 std::set_new_handler&#xff08;&#xff09;函數的理解 關于set_new_handler的理解_wck0617-CSDN博客new分配內存的時候 如果分配的空間不…

python每天定時9點執行_python定時器每天訂時執行的實例方法

python定時器,實現每天凌晨3點執行的方法 如下所示&#xff1a;Created on 2018-4-20 例子:每天凌晨3點執行func方法import datetime import threading def func(): print("haha") #如果需要循環調用&#xff0c;就要添加以下方法 timer threading.Timer(86400, fun…

Python學習16 正則表達式2 re模塊

re 模塊 re 模塊&#xff1a; Python的 re 模塊實現了正則表達式處理的功能。 導入re模塊后&#xff0c;使用findall、search函數可以進行匹配 查找&#xff1a;match和search 多個匹配上的&#xff0c;也只會返回第一個匹配上的 re.match()&#xff1a; 需要特別注意的是&…

STL源碼剖析 內存基本處理工具 初始化空間的五個函數

初始化空間的五個函數構造函數 construct()析構函數 destroy()剩余三個底層函數 和 高層函數之間的對應關系如下uninitialized_copy() 對應 copy()uninitialized_fill() 對應 fill()uninitialized_fill_n() 對應 fill_n()使用<memory>使用上述三個底層函數 uninitiali…

單基因gsea_篩到5分的核心基因以后你可以怎么做?

這一次我們從一些已經發表的文章拆解&#xff0c;我們來看看&#xff0c;你找到了一個核心基因以后&#xff0c;你可以怎么做呢&#xff1f;我們就不說那么多廢話了&#xff0c;直接用幾篇文章的解讀來帶著大家領會一下如何去進行下一步的分析。Case1&#xff1a;預后標志物免疫…

安卓 原生okhttp使用get與post獲取網絡數據

網址 https://square.github.io/okhttp/ 配置 依賴 在module的build.gradle中&#xff1a; implementation com.squareup.okhttp3:okhttp:3.14.7implementation com.squareup.okio:okio:1.17.5AndroidManifest.xml <uses-permission android:name"android.permissi…

STL源碼剖析 迭代器的概念和traits編程技法

迭代器&#xff1a;依序巡防某個聚合物(容器)所含的各個元素&#xff0c;但是不需要暴露這個聚合物的內部表述方式核心思想&#xff1a;將容器和算法分開&#xff0c;彼此獨立設計容器和算法的泛型化&#xff0c;均可以使用模板&#xff0c;使用迭代器連接容器和算法例子 templ…

.sql文件如何執行_干貨|一條SQL查詢語句是如何執行的

作者&#xff1a;wanber鏈接&#xff1a;https://blog.nowcoder.net/n/9e120e8f1314466bb44fe706b283dc20