当前位置:网站首页>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
边栏推荐
- Interface joint debugging test script optimization v4.0
- Racher integrates LDAP to realize unified account login
- Compilation of kickstart file
- 【向量检索研究系列】产品介绍
- app通用功能測試用例
- 在Docker中分分钟拥有Oracle EMCC 13.5环境
- 2022/2/11 summary
- 17、 MySQL - high availability + read / write separation + gtid + semi synchronous master-slave replication cluster
- Random类的那些事
- Introduction au GPIO
猜你喜欢
Automatic test tool katalon (WEB) test operation instructions
48页数字政府智慧政务一网通办解决方案
准备好在CI/CD中自动化持续部署了吗?
Close unregistering application XXX with Eureka with status down after Eureka client starts
【自动化测试框架】关于unittest你需要知道的事
DevOps可以帮助减少技术债务的十种方式
2022 PMP project management examination agile knowledge points (9)
Imeta | Chen Chengjie / Xia Rui of South China Agricultural University released a simple method of constructing Circos map by tbtools
Building lease management system based on SSM framework
DAY SIX
随机推荐
Pytest multi process / multi thread execution test case
AVL树到底是什么?
[vector retrieval research series] product introduction
MVC and MVVM
Tourism Management System Based on jsp+servlet+mysql framework [source code + database + report]
Competition between public and private chains in data privacy and throughput
Matplotlib draws a histogram and adds values to the graph
kubernetes部署ldap
Testers, how to prepare test data
Compilation of kickstart file
37页数字乡村振兴智慧农业整体规划建设方案
Every year, 200 billion yuan is invested in the chip field, and "China chip" venture capital is booming
App general function test cases
TypeScript增量编译
DAY ONE
DevOps可以帮助减少技术债务的十种方式
PostgreSQL使用Pgpool-II实现读写分离+负载均衡
【CVPR 2022】目标检测SOTA:DINO: DETR with Improved DeNoising Anchor Boxes for End-to-End Object Detection
Leecode brush question record sword finger offer 58 - ii Rotate string left
Sword finger offer 26 Substructure of tree