当前位置:网站首页>509 certificat basé sur Go
509 certificat basé sur Go
2022-07-07 00:19:00 【Biyezuopinvip】
Adresse de téléchargement des ressources:https://download.csdn.net/download/sheziqiong/85926996
Adresse de téléchargement des ressources:https://download.csdn.net/download/sheziqiong/85926996
Un.、X.509Description du certificat
En cryptographie,X.509Est la norme de format pour les certificats à clé publique,Utilisé dans de nombreux protocoles Internet.X.509Format du certificat de clé publique,Liste des certificats révoqués(CRLs),L'algorithme de chemin de vérification du certificat, etc., est spécifié..
UnX.509Le certificat contient son numéro de version,Numéro de série du certificat,Algorithme de signature,Délivré par,Corps du certificat,Date de péremption,Clé publique,Clé publique et autres informations.Utilisation de l'information dans le certificat ASN.1Codage,ASN.1Les données sonttag,Longueur,Codage des valeurs.La structure de base du certificat est la suivante:RFC 5280Moyenne4.1La section contient les dispositions suivantes::
Certificate ::= SEQUENCE {
tbsCertificate TBSCertificate,
signatureAlgorithm AlgorithmIdentifier,
signatureValue BIT STRING
}
(Corps du certificat, Algorithme de signature et valeur de signature )
TBSCertificate ::= SEQUENCE {
version [0] EXPLICIT Version DEFAULT v1,
serialNumber CertificateSerialNumber,
signature AlgorithmIdentifier,
issuer Name,
validity Validity,
subject Name,
subjectPublicKeyInfo SubjectPublicKeyInfo,
issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL,
-- If present, version MUST be v2 or v3
subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL,
-- If present, version MUST be v2 or v3
extensions [3] EXPLICIT Extensions OPTIONAL
-- If present, version MUST be v3
}
(Corps du certificat,Contient le numéro de version,Numéro de série,Identification de l'algorithme de signature, Informations sur l'émetteur ,Date de péremption,Corps du certificat, Informations sur la clé publique du certificat ,Délivré par ID,Sujet ID Et extensions )
Version ::= INTEGER { v1(0), v2(1), v3(2) }
( Version du certificat ,La valeur peut être0,1,2, Représente la version séparément 1,2,3)
CertificateSerialNumber ::= INTEGER
(Numéro de série du certificat)
Validity ::= SEQUENCE {
notBefore Time,
notAfter Time
}
(Validité du certificat, Se compose des heures de début et de fin )
Time ::= CHOICE {
utcTime UTCTime,
generalTime GeneralizedTime
}
UniqueIdentifier ::= BIT STRING
SubjectPublicKeyInfo ::= SEQUENCE {
algorithm AlgorithmIdentifier,
subjectPublicKey BIT STRING
}
( L'information à clé publique comprend l'algorithme à clé publique et les données à clé publique. )
Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension
Extension ::= SEQUENCE {
extnID OBJECT IDENTIFIER,
critical BOOLEAN DEFAULT FALSE,
extnValue OCTET STRING
-- contains the DER encoding of an ASN.1 value
-- corresponding to the extension type identified
-- by extnID
}
AlgorithmIdentifier ::= SEQUENCE {
algorithm OBJECT IDENTIFIER,
parameters ANY DEFINED BY algorithm OPTIONAL
}
2.、Lire X.509Certificat
Utilisé dans les procédures soumises Go Lecture de la langue X.509Procédures,Appelé Go Langueencoding/asn1Bibliothèque ASN.1 Lecture du contenu codé et crypto/x509/pkix La Bibliothèque lit les informations de l'émetteur et du corps du certificat .
Dans le Code, selon X.509 La structure du certificat définit la structure suivante pour: ASN.1Lire:
- CertificateData, Correspond à Certificate:
type CertificateData struct {
TBSCertificate tbsCertificate
SignatureAlgorithm AlgorithmIdentifier
SignatureValue asn1.BitString
}
- TbsCertificate, Correspond à TBSCertificate:
type tbsCertificate struct {
Version int `asn1:"optional,explicit,default:0,tag:0"`
SerialNumber *big.Int
Signature AlgorithmIdentifier
Issuer asn1.RawValue
Validity timeSpan
Subject asn1.RawValue
PublicKey publicKeyInfo
UniqueId asn1.BitString `asn1:"optional,tag:1"`
SubjectUniqueId asn1.BitString `asn1:"optional,tag:2"`
Extensions []extension `asn1:"optional,explicit,tag:3"`
}
- timeSpan, Correspondant à la structure ci - dessus Validity:
type timeSpan struct {
NotBefore, NotAfter time.Time
}
- publicKeyInfo, Correspondant à ce qui précède SubjectPublicKeyInfo:
type publicKeyInfo struct {
Algorithm AlgorithmIdentifier
PublicKey asn1.BitString
}
- extension, Correspondant à la structure ci - dessus Extension
type extension struct {
ExtnID asn1.ObjectIdentifier
Critical bool `asn1:"default:false"`
ExtnValue []byte
}
- AlgorithmIdentifier, Correspondant à ce qui précède AlgorithmIdentifier:
type AlgorithmIdentifier struct {
Algorithm asn1.ObjectIdentifier
Parameters asn1.RawValue `asn1:"optional"`
}
Trois、 Brève description de la structure du programme
Le Code soumis contient trois fichiers de code :x509cert/certificate.go Définit la structure du certificat et la fonction d'identification de l'algorithme dans le certificat , Et définit ce qui suit: certInfo Structure pour faciliter l'accès à l'information sur les certificats par d'autres codes :
type CertInfo struct {
Version int
Serial *big.Int
Signature AlgorithmIdentifier
Issuer IssuerType
Validity timeSpan
Subject IssuerType
PublicKey publicKeyInfo
UniqueId asn1.BitString
SubjectUniqueId asn1.BitString
Extensions []extension
SignatureAlgorithm AlgorithmIdentifier
SignatureValue asn1.BitString
}
type IssuerType struct {
Country string
Province string
City string
Organization string
Unit string
}
x509cert/static.go Le fichier contient des données statiques telles que le nom de l'algorithme et oid Attendez..
main.go Le fichier contient la fonction principale du programme ,Sera basé sur pem Format ou DER Format lire le fichier et imprimer les informations du certificat à la sortie standard .
Quatre、 Résultats d'exécution de la compilation du programme
Utilisation du programmego Pour compiler, Exécuter la commande dans le Répertoire de code go build –o x509 Compilable Build named x509Exécutable pour.Soumis par bin Le dossier contient déjà l'utilisation go1.11.1 Compilé Windows,MacOS Et Linux Exécutable sous.
Le programme est utilisé comme suit: :
./x509 [--DER] filename
Où, si spécifié DER Options, Le programme utilisera DER Comment lire le certificat , S'il n'est pas spécifié, le programme utilisera PEM Comment lire le certificat .
Utilisation du certificat pour l'exécution des essais openssl Générer un certificat racine auto - signé ,Les ordres sont les suivants::
openssl req -new -x509 -days 365 -keyout rsa.key -out rsa.pem
Les informations du corps du certificat doivent être saisies après l'exécution de la commande. :
Utilisez cette commande pour utiliser RSA La période de validité de la génération de signature de l'algorithme est 365 Certificat racine pour jours , Utilisez l'outil de certificat propre au système pour voir les informations de certificat comme suit: :
Utilisez la commande suivante pour générer pem Certificat converti enDER Certificat à tester :
openssl x509 -in rsa.pem -outform der -out rsa.crt
Générer après conversion rsa.crt Documents de certification, Voir le même résultat que le certificat original .
Utilisez la commande suivante pour générerECDSA Le certificat de l'algorithme de signature est utilisé pour tester :
openssl ecparam -name secp256k1 -genkey -param_enc explicit -out ecparam.pem
openssl req -new -x509 -key ecparam.pem -out ec.pem -days 365
Générer un certificat après avoir entré les informations du corps du certificat :
L'effet de l'exécution dans le répertoire des certificats en utilisant le programme écrit est montré dans la figure :
- rsa.pem
./…/bin/x509-darwin-amd64 rsa.pem
Le programme affiche le numéro de version du certificat ,Numéro de série,Algorithme de signature,Délivré par,Sujet,Date de péremption,Informations à clé publique,RSA Données à clé publique et signature du certificat , Même contenu de certificat que celui affiché par l'outil système .
- Utiliser DER Les résultats de la lecture du fichier de certificat sont présentés dans la figure ci - dessous. :
Avec PEM La lecture du certificat en mode donne les mêmes résultats .
- Lireecdsa Le résultat du certificat chiffré est le suivant: :
Mêmes informations que lors de la génération du certificat .
Adresse de téléchargement des ressources:https://download.csdn.net/download/sheziqiong/85926996
Adresse de téléchargement des ressources:https://download.csdn.net/download/sheziqiong/85926996
边栏推荐
- Introduction au GPIO
- How rider uses nuget package offline
- DAY FOUR
- Encryption algorithm - password security
- 37頁數字鄉村振興智慧農業整體規劃建設方案
- Use package FY in Oracle_ Recover_ Data. PCK to recover the table of truncate misoperation
- GEO数据挖掘(三)使用DAVID数据库进行GO、KEGG富集分析
- What can the interactive slide screen demonstration bring to the enterprise exhibition hall
- Building lease management system based on SSM framework
- PostgreSQL highly available repmgr (1 master 2 slave +1witness) + pgpool II realizes master-slave switching + read-write separation
猜你喜欢
基于jsp+servlet+mysql框架的旅游管理系统【源码+数据库+报告】
File and image comparison tool kaleidoscope latest download
DevOps可以帮助减少技术债务的十种方式
DAY THREE
刘永鑫报告|微生物组数据分析与科学传播(晚7点半)
Penetration test --- database security: detailed explanation of SQL injection into database principle
DAY SIX
After leaving a foreign company, I know what respect and compliance are
[automated testing framework] what you need to know about unittest
专为决策树打造,新加坡国立大学&清华大学联合提出快速安全的联邦学习新系统
随机推荐
在docker中快速使用各个版本的PostgreSQL数据库
Leecode brush question record sword finger offer 56 - ii Number of occurrences of numbers in the array II
48 page digital government smart government all in one solution
Wind chime card issuing network source code latest version - commercially available
Compile logisim
Unity color palette | color palette | stepless color change function
《LaTex》LaTex数学公式简介「建议收藏」
从外企离开,我才知道什么叫尊重跟合规…
Penetration test --- database security: detailed explanation of SQL injection into database principle
[automated testing framework] what you need to know about unittest
什么是响应式对象?响应式对象的创建过程?
PostgreSQL高可用之repmgr(1主2从+1witness)+Pgpool-II实现主从切换+读写分离
DAY TWO
Competition between public and private chains in data privacy and throughput
STM32 enters and wakes up the stop mode through the serial port
Random类的那些事
Use source code compilation to install postgresql13.3 database
pinia 模块划分
【自动化测试框架】关于unittest你需要知道的事
DAY TWO