Developers Notes
  • Welcome
  • Developer
    • Java
      • JUnit
        • Parameterized Test
        • Introduction to WireMock
      • Maven
        • Resource Reader and Writer
        • JUnit with Maven
        • Maven Run
        • A Quick Guide to Maven Wrapper
      • Spring
        • Autowired vs Resource
        • Spring OpenFeign 사용시 https 신뢰하는 방법
        • Aspect with Annotation
        • Spring JPA에서 Tibero를 사용하기 위한 설정
        • Spring module dependency
        • Mockito
          • Autowired @Value field in Spring with Mockito
        • SpringBoot Hybernate application.yml
        • ReflectionTestUtils
        • Spring Properties File Outside jar
        • Spring @RequestParam Annotation
        • Properties with Spring and Spring Boot
        • Passing JVM Options from Gradle bootRun
        • Securing Spring Boot API With API Key and Secret
        • Why Is Field Injection Not Recommended?
        • An Overview of Identifiers in Hibernate/JPA
      • Etcs
        • BigDecimal 사용시 주의 사항
        • static factory methods common naming conventions
        • List of Lists into a List (Stream)
        • Return null in stream
        • Logging with Lombok
        • JPA
        • Big-O Java Collections
    • MySQL
      • Active Connections on MySQL
      • MariaDB-Galera
      • FOUND_ROWS
      • MySQL Group Replication Requirements
      • Data Types Explicit Default Handling
    • C/C++
      • Autotool 사용법
      • Intruduction to GNU Autotools
      • mysql
        • C Api Flow
        • MySQL Connector/C++ 8.3 Developer Guide
      • Common vulnerabilities guide for C programmers
      • HTTP in C++
      • JSON in C++
      • How to get memory usage at runtime using C++?
      • How to get time in milliseconds using C++ on Linux?
      • Sleep Functions in C++
      • Calculate Cpu Usage on Linux as Top
    • CryptoGraphy
      • 인증 기관(CA;Certificate Authority) 구성하고 인증서 발급하기
      • KeyTool Import PrivateKey, Certificate
      • Java Keytool 사용법
      • PKCS, Public Key Cryptography Standard
      • CER/DER/CRT/CSR 형식 파일이란?
      • FIPS 140-2
      • SSL 인증서 발급
      • 사용법, tip 정리
      • OpenSSL
        • OpenSSL guide
        • Openssl RSA Private Key Encrypt
      • How to Read PEM File to Get Public and Private Keys
    • PKCS#11 API
      • PKCS#11 API-강좌1
      • PKCS#11 API-강좌2
      • PKCS#11 API-강좌3
      • PKCS#11 API-강좌4
      • PKCS#11 API-강좌5(C 언어로 된 Sample Code)
      • PKCS#11 API-강좌6(EC Key 생성 및 Signing)
    • Warehouse of PKI
    • GoLang
      • go-cshared-examples
      • Fun building shared libraries in Go
      • Golang time
      • Encoding Json
  • OpenSSL
    • OpenSSL Document
      • openssl-req
      • x509v3_config
      • Openssl Example
    • Creating a Self-Signed Certificate With OpenSSL
    • Openssl 3.x Provider
      • Writing OpenSSL Provider Skeleton
    • OpenSSL Certificate Command
  • DevOps
    • Docker
      • Environment Variables for MariaDB or MySQL Docker
      • Container Technology, Docker
      • Docker Trouble Shooting
      • Docker BuildKit
      • How to clear Docker cache and free up space on your system
    • Cloud
      • Serverless Architecture
      • AWS
        • AWS 주요 자습서 Link
        • Diagram-as-code for AWS architecture.
        • AWS Architecture icon
      • Install MariaDB Galera by Helm
      • Jenkinsfile VIM syntax highlighting
      • Cloud Development Kit for Kubernetes
    • VM
      • vagrant를 사용한 vm 설치 방법
    • Etcs
      • Logstash
        • Installing Logstash
        • Configuration Logstash Output
      • Rancher Install
      • Install ELK
      • Simpler Tool for Deploying Rancher
    • Ubuntu
      • Install SFTP Client
  • Etcs
    • Etcs
      • Useful Tools
      • Links
      • Entertainment
Powered by GitBook
On this page
  • Pre-Requist
  • Create certificate extensions files
  • Generate
  • Generate CA Private Key and Certificate
  • Generate Server & Client CSR
  • Generate Certificate
  • References
Edit on GitHub
  1. OpenSSL

OpenSSL Certificate Command

Pre-Requist

Create certificate extensions files

  • ca.conf

  • server.conf

  • client.conf

ca.conf
[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no

[req_distinguished_name]
C = KR
O = ksmartech.com
OU = rnd
CN = caroot

[extensions]
basicConstraints = critical, @basic_constraints
keyUsage = keyEncipherment, digitalSignature, nonRepudiation, keyCertSign

subjectKeyIdentifier = hash
subjectAltName = @alt_names

[basic_constraints]
CA = true
pathlen = 1

[alt_names]
DNS.1 = localhost

server.conf
[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no

[req_distinguished_name]
C = KR
O = ksmartech.com
OU = rnd
CN = server

[extensions]
basicConstraints = critical, @basic_constraints
keyUsage = keyEncipherment, digitalSignature, nonRepudiation
extendedKeyUsage = serverAuth
subjectKeyIdentifier = hash
subjectAltName = @alt_names

[basic_constraints]
CA = false

[alt_names]
DNS.1 = localhost

client.conf
[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no

[req_distinguished_name]
C = KR
O = ksmartech.com
OU = rnd
CN = client

[extensions]
basicConstraints = critical, @basic_constraints
keyUsage = keyEncipherment, digitalSignature, nonRepudiation
extendedKeyUsage = clientAuth
subjectKeyIdentifier = hash

[basic_constraints]
CA = false

Generate

Generate CA Private Key and Certificate

openssl req -x509 -nodes -days 1000 -newkey rsa:2048 -sha256 -keyout ca.key -out ca.crt -config ca.conf -extensions extensions

Generate Server & Client CSR

# generate private key and csr
openssl req -newkey rsa:2048 -nodes -sha256 -keyout server.key -out server.csr -config server.conf -extensions extensions
# generate csr with existing private key
openssl req -out server.csr -key server.key -new -config server.conf -extensions extensions
 

# generate private key and csr
openssl req -newkey rsa:2048 -nodes -sha256 -keyout client.key -out client.csr -config client.conf -extensions extensions
# generate csr with existing private key
openssl req -out client.csr -key client.key -new -config client.conf -extensions extensions

Verify Generated CSR & Private Key

openssl rsa -check -in server.key
openssl req -text -noout -verify -in server.csr
 
openssl rsa -check -in client.key
openssl req -text -noout -verify -in client.csr

Generate Certificate

openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -out server.crt -days 365 -extfile server.conf -extensions extensions
openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -out client.crt -days 365 -extfile client.conf -extensions extensions

Verify Generated Certificate

openssl x509 -noout -text -in server.crt
openssl x509 -noout -text -in client.crt

References

PreviousWriting OpenSSL Provider SkeletonNextDocker

Last updated 1 month ago

x509v3_config - OpenSSL Documentation
Logo
How to self sign or certify a (CSR) with SAN X.509 V3 extension using IBM PASE OpenSSL.
Logo
Frequently used OpenSSL Commands
Logo