Difference between revisions of "OpenSSL: Essentials"

From OnnoWiki
Jump to navigation Jump to search
(Created page with "sumber: https://www.digitalocean.com/community/tutorials/openssl-essentials-working-with-ssl-certificates-private-keys-and-csrs OpenSSL Essentials: Working with SSL Certific...")
 
 
(30 intermediate revisions by the same user not shown)
Line 2: Line 2:
  
  
OpenSSL Essentials: Working with SSL Certificates, Private Keys and CSRs
+
==Introduction==
PostedSeptember 12, 2014 506.2k views Security FAQ
 
Introduction
 
  
OpenSSL is a versatile command line tool that can be used for a large variety of tasks related to Public Key Infrastructure (PKI) and HTTPS (HTTP over TLS). This cheat sheet style guide provides a quick reference to OpenSSL commands that are useful in common, everyday scenarios. This includes OpenSSL examples of generating private keys, certificate signing requests, and certificate format conversion. It does not cover all of the uses of OpenSSL.
+
OpenSSL adalah tool CLI serbaguna yang dapat digunakan untuk berbagai macam tugas yang berkaitan dengan Public Key Infrastructure (PKI) dan HTTPS (HTTP over TLS). Panduan gaya cheat sheet ini memberikan referensi cepat untuk perintah OpenSSL yang berguna dalam umum, skenario sehari-hari. Ini termasuk contoh OpenSSL untuk menghasilkan kunci pribadi, permintaan penandatanganan sertifikat, dan konversi format sertifikat. Ini tidak mencakup semua penggunaan OpenSSL.
  
How to Use This Guide:
+
Cara menggunakan panduan ini:
  
    If you are not familiar with certificate signing requests (CSRs), read the first section
+
* Jika Anda tidak terbiasa dengan Certificate Signing Request (CSR), baca bagian pertama.
    Aside from the first section, this guide is in a simple, cheat sheet format--self-contained command line snippets
+
* Selain bagian pertama, panduan ini ada dalam format cheat sheet sederhana -- cuplikan contoh perintah
    Jump to any section that is relevant to the task you are trying to complete (Hint: use the Contents menu on the bottom-left or your browser's Find function)
+
* Loncat ke menu yang anda butuhkan
    Most of the commands are one-liners that have been expanded to multiple lines (using the \ symbol) for clarity
+
* Kebanyakan perintah yang digunakan adalah satu kalimat. Di expand menjadi banyak kalimat menggunakan simbol \ untuk memudahkan dalam membaca.
  
About Certificate Signing Requests (CSRs)
+
==Tentang Certificate Signing Request (CSR)==
  
If you would like to obtain an SSL certificate from a certificate authority (CA), you must generate a certificate signing request (CSR). A CSR consists mainly of the public key of a key pair, and some additional information. Both of these components are inserted into the certificate when it is signed.
+
Jika anda ingin mendapatkan sertifikat SSL dari otoritas sertifikat (CA), anda harus membuat Certificate Signing Request (CSR). CSR terdiri dari kunci publik dari pasangan kunci, dan beberapa informasi tambahan. Kedua komponen ini dimasukkan ke dalam sertifikat saat ditandatangani.
  
Whenever you generate a CSR, you will be prompted to provide information regarding the certificate. This information is known as a Distinguised Name (DN). An important field in the DN is the Common Name (CN), which should be the exact Fully Qualified Domain Name (FQDN) of the host that you intend to use the certificate with. It is also possible to skip the interactive prompts when creating a CSR by passing the information via command line or from a file.
+
Kapan pun anda membuat CSR, anda akan diminta untuk memberikan informasi mengenai sertifikat tersebut. Informasi ini dikenal dengan nama Distinguised Name (DN). Bagian penting di DN adalah Common Name (CN), yang seharusnya merupakan Fully Qualified Domain Name (FQDN) dari host yang ingin anda gunakan dengan sertifikat. Juga memungkinkan untuk melewatkan petunjuk interaktif saat membuat CSR dengan menyampaikan informasi melalui baris perintah atau dari sebuah file..
  
The other items in a DN provide additional information about your business or organization. If you are purchasing an SSL certificate from a certificate authority, it is often required that these additional fields, such as "Organization", accurately reflect your organization's details.
+
Parameter lainnya di DN memberikan informasi tambahan tentang bisnis atau organisasi anda. Jika anda membeli sertifikat SSL dari otoritas sertifikat, sering diperlukan agar bidang tambahan ini, seperti "Organisasi", mencerminkan secara akurat rincian organisasi anda.
  
Here is an example of what the CSR information prompt will look like:
+
Berikut adalah contoh dari apa informasi CSR akan terlihat seperti:
  
---
+
---
Country Name (2 letter code) [AU]:US
+
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:New York
+
State or Province Name (full name) [Some-State]:New York
Locality Name (eg, city) []:Brooklyn
+
Locality Name (eg, city) []:Brooklyn
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Example Brooklyn Company
+
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Example Brooklyn Company
Organizational Unit Name (eg, section) []:Technology Division
+
Organizational Unit Name (eg, section) []:Technology Division
Common Name (e.g. server FQDN or YOUR name) []:examplebrooklyn.com
+
Common Name (e.g. server FQDN or YOUR name) []:examplebrooklyn.com
Email Address []:
+
Email Address []:
  
If you want to non-interactively answer the CSR information prompt, you can do so by adding the -subj option to any OpenSSL commands that request CSR information. Here is an example of the option, using the same information displayed in the code block above:
+
Jika anda ingin secara noninteraktif menjawab permintaan informasi CSR, anda dapat melakukannya dengan menambahkan opsi -subj ke perintah OpenSSL yang meminta informasi CSR. Berikut adalah contoh pilihannya, dengan menggunakan informasi yang sama yang ditampilkan di blok kode di atas:
  
-subj "/C=US/ST=New York/L=Brooklyn/O=Example Brooklyn Company/CN=examplebrooklyn.com"
+
-subj "/C=US/ST=New York/L=Brooklyn/O=Example Brooklyn Company/CN=examplebrooklyn.com"
  
Now that you understand CSRs, feel free to jump around to whichever section of this guide that covers your OpenSSL needs.
+
==Generating CSR==
Generating CSRs
 
  
This section covers OpenSSL commands that are related to generating CSRs (and private keys, if they do not already exist). CSRs can be used to request SSL certificates from a certificate authority.
+
Bakan ini akan membahas tentang perintah OpenSSL yang berhubungan dengan generating CSR (dan private key, jika belum ada). CSR digunakan untuk permohonan certificate SSL dari Certificate Authority (CA).
  
Keep in mind that you may add the CSR information non-interactively with the -subj option, mentioned in the previous section.
+
Jika anda ingin memasukan informasi CSR secara non-interaktif dapat menggunakan opsi -subj
Generate a Private Key and a CSR
 
  
Use this method if you want to use HTTPS (HTTP over TLS) to secure your Apache HTTP or Nginx web server, and you want to use a Certificate Authority (CA) to issue the SSL certificate. The CSR that is generated can be sent to a CA to request the issuance of a CA-signed SSL certificate. If your CA supports SHA-2, add the -sha256 option to sign the CSR with SHA-2.
+
===Generate Private Key dan CSR===
  
This command creates a 2048-bit private key (domain.key) and a CSR (domain.csr) from scratch:
+
Gunakan metoda ini jika anda ingin menggunakan HTTPS (HTTP over TLS) untuk mengamankan Apache HTTP atau Nginx web server, dan anda menginginkan untuk menggunakan Certificate Authority (CA) untuk issue SSL certificate. CSR yang dihasilkan dapat dikirim ke CA untuk meminta penerbitan sertifikat SSL yang ditandatangani CA. Jika CA anda mendukung SHA-2, tambahkan opsi -sha256 untuk menandatangani CSR dengan SHA-2.
  
openssl req \
+
Perintah berikut akan membuat 2048-bit private key (domain.key) dan CSR (domain.csr) dari nol:
      -newkey rsa:2048 -nodes -keyout domain.key \
 
      -out domain.csr
 
  
Answer the CSR information prompt to complete the process.
+
openssl req \
 +
        -newkey rsa:2048 -nodes -keyout domain.key \
 +
        -out domain.csr
  
The -newkey rsa:2048 option specifies that the key should be 2048-bit, generated using the RSA algorithm. The -nodes option specifies that the private key should not be encrypted with a pass phrase. The -new option, which is not included here but implied, indicates that a CSR is being generated.
+
Jawab informasi yang dibutuhkan CSR untuk menyelesaikan proses.
Generate a CSR from an Existing Private Key
 
  
Use this method if you already have a private key that you would like to use to request a certificate from a CA.
+
* -newkey rsa:2048 mensyaratkan agar key menggunakan 2048-bit, dan dibuat menggunakan algoritma RSA .
 +
* -nodes mensyaratkan bahwa private key tidak di enkripsi dengan pass phrase.
 +
* -new - tidak di lakukan dalam contoh di atas, mengindikasikan bahwa CSR harus dibuat.
  
This command creates a new CSR (domain.csr) based on an existing private key (domain.key):
+
===Generate a CSR from an Existing Private Key===
  
openssl req \
+
Gunakan metoda ini jika anda sudah memiliki private key yang ingin anda gunakan untuk request sebuah certificate dari CA.
      -key domain.key \
 
      -new -out domain.csr
 
  
Answer the CSR information prompt to complete the process.
+
Perintah ini akan membuat CSR baru (domain.csr) berbasis pada private key (domain.key) yang sudah ada:
  
The -key option specifies an existing private key (domain.key) that will be used to generate a new CSR. The -new option indicates that a CSR is being generated.
+
openssl req \
Generate a CSR from an Existing Certificate and Private Key
+
        -key domain.key \
 +
        -new -out domain.csr
  
Use this method if you want to renew an existing certificate but you or your CA do not have the original CSR for some reason. It basically saves you the trouble of re-entering the CSR information, as it extracts that information from the existing certificate.
+
Jawab informasi yang dibutuhkan CSR untuk menyelesaikan proses.
  
This command creates a new CSR (domain.csr) based on an existing certificate (domain.crt) and private key (domain.key):
+
* -key mensyaratkan private key (domain.key) yang ada akan digunakan untuk membuat CSR baru.
 +
* -new mengindikasikan bahwa CSR harus dibuat.
  
openssl x509 \
+
===Generate a CSR from an Existing Certificate and Private Key===
      -in domain.crt \
 
      -signkey domain.key \
 
      -x509toreq -out domain.csr
 
  
The -x509toreq option specifies that you are using an X509 certificate to make a CSR.
+
Gunakan metoda ini jika anda ingin me-renew certificate yang ada tapi anda & CA anda tidak mempunyai CSR yang asli karena satu dan lain hal. Ini pada dasarnya akan memudahkan untuk tidak memasukan ulang informasi CSR, karena dia akan mengekstrak dari certificate yang ada.
Generating SSL Certificates
 
  
If you would like to use an SSL certificate to secure a service but you do not require a CA-signed certificate, a valid (and free) solution is to sign your own certificates.
+
Perintah ini pada dasarnya membuat CSR baru (domain.csr) berbasis pada certificate yang ada (domain.crt) dan private key (domain.key):
  
A common type of certificate that you can issue yourself is a self-signed certificate. A self-signed certificate is a certificate that is signed with its own private key. Self-signed certificates can be used to encrypt data just as well as CA-signed certificates, but your users will be displayed a warning that says that the certificate is not trusted by their computer or browser. Therefore, self-signed certificates should only be used if you do not need to prove your service's identity to its users (e.g. non-production or non-public servers).
+
openssl x509 \
 +
        -in domain.crt \
 +
        -signkey domain.key \
 +
        -x509toreq -out domain.csr
  
This section covers OpenSSL commands that are related to generating self-signed certificates.
+
Opsi -x509toreq mengindikasikan kalau kita menggunakan certificate X509 untuk membuat CSR.
Generate a Self-Signed Certificate
 
  
Use this method if you want to use HTTPS (HTTP over TLS) to secure your Apache HTTP or Nginx web server, and you do not require that your certificate is signed by a CA.
+
==Generating SSL Certificates==
  
This command creates a 2048-bit private key (domain.key) and a self-signed certificate (domain.crt) from scratch:
+
Jika anda ingin menggunakan sertifikat SSL untuk mendapatkan layanan namun anda tidak memerlukan sertifikat yang ditandatangani oleh CA, solusi yang sah (dan gratis) adalah menandatangani sertifikat anda sendiri.
  
openssl req \
+
Jenis sertifikat yang umum yang dapat anda gunakan sendiri adalah sertifikat yang ditandatangani sendiri. Sertifikat yang ditandatangani sendiri adalah sertifikat yang ditandatangani dengan kunci privatnya sendiri. Sertifikat yang ditandatangani sendiri dapat digunakan untuk mengenkripsi data sama seperti sertifikat yang ditandatangani oleh CA, namun pengguna Anda akan ditampilkan peringatan yang mengatakan bahwa sertifikat tersebut tidak dipercaya oleh komputer atau browser mereka. Oleh karena itu, sertifikat yang ditandatangani sendiri hanya boleh digunakan jika anda tidak perlu membuktikan identitas layanan anda kepada penggunanya (misalnya server non-produksi atau non-publik).
      -newkey rsa:2048 -nodes -keyout domain.key \
 
      -x509 -days 365 -out domain.crt
 
  
Answer the CSR information prompt to complete the process.
+
Bagian ini mencakup perintah OpenSSL yang terkait dengan pembuatan sertifikat self-signed.
  
The -x509 option tells req to create a self-signed cerificate. The -days 365 option specifies that the certificate will be valid for 365 days. A temporary CSR is generated to gather information to associate with the certificate.
+
===Generate a Self-Signed Certificate===
Generate a Self-Signed Certificate from an Existing Private Key
 
  
Use this method if you already have a private key that you would like to generate a self-signed certificate with it.
+
Gunakan metode ini jika anda ingin menggunakan HTTPS (HTTP over TLS) untuk mengamankan server web Apache HTTP atau Nginx anda, dan anda tidak mengharuskan sertifikat anda ditandatangani oleh CA.
  
This command creates a self-signed certificate (domain.crt) from an existing private key (domain.key):
+
Perintah ini akan membuat 2048-bit private key (domain.key) dan self-signed certificate (domain.crt) dari NOL:
  
openssl req \
+
openssl req \
      -key domain.key \
+
        -newkey rsa:2048 -nodes -keyout domain.key \
      -new \
+
        -x509 -days 365 -out domain.crt
      -x509 -days 365 -out domain.crt
 
  
Answer the CSR information prompt to complete the process.
+
Jawab informasi yang dibutuhkan CSR untuk menyelesaikan proses.
  
The -x509 option tells req to create a self-signed cerificate. The -days 365 option specifies that the certificate will be valid for 365 days. The -new option enables the CSR information prompt.
+
* Opsi -x509 memberitahukan req untuk membuat self-signed cerificate.
Generate a Self-Signed Certificate from an Existing Private Key and CSR
+
* Opsi -days 365 mensyaratkan certificate akan valid untuk 365 days.
 +
* Temporary CSR akan dibuat untuk mengumpulkan informasi terkait dengan certificate.
  
Use this method if you already have a private key and CSR, and you want to generate a self-signed certificate with them.
+
===Generate a Self-Signed Certificate from an Existing Private Key===
  
This command creates a self-signed certificate (domain.crt) from an existing private key (domain.key) and (domain.csr):
+
Gunakan metoda ini jika anda sudah mempunyai private key yang ingin digunakan untuk membuat self-signed certificate .
  
openssl x509 \
+
Perintah berikut akan membuat self-signed certificate (domain.crt) dari private key (domain.key) yang ada:
      -signkey domain.key \
 
      -in domain.csr \
 
      -req -days 365 -out domain.crt
 
  
The -days 365 option specifies that the certificate will be valid for 365 days.
+
openssl req \
View Certificates
+
        -key domain.key \
 +
        -new \
 +
        -x509 -days 365 -out domain.crt
  
Certificate and CSR files are encoded in PEM format, which is not readily human-readable.
+
Jawab informasi yang dibutuhkan CSR untuk menyelesaikan proses.
  
This section covers OpenSSL commands that will output the actual entries of PEM-encoded files.
+
* Opsi -x509 memberitahukan req untuk membuat self-signed cerificate.
View CSR Entries
+
* Opsi -days 365 mensyaratkan certificate akan valid untuk 365 days.
 +
* Opsi -new mengaktifkan CSR information prompt.
  
This command allows you to view and verify the contents of a CSR (domain.csr) in plain text:
+
===Generate a Self-Signed Certificate from an Existing Private Key and CSR===
  
openssl req -text -noout -verify -in domain.csr
+
Gunakan metoda ini jika anda sudah mempunyai private key dan CSR, dan anda ingin membuat self-signed certificate.
  
View Certificate Entries
+
Perintah ini membuat self-signed certificate (domain.crt) dari private key (domain.key) dan (domain.csr) yang ada:
  
This command allows you to view the contents of a certificate (domain.crt) in plain text:
+
openssl x509 \
 +
        -signkey domain.key \
 +
        -in domain.csr \
 +
        -req -days 365 -out domain.crt
  
openssl x509 -text -noout -in domain.crt
+
* Opsi -days 365 mensyaratkan certificate akan valid untuk 365 days.
  
Verify a Certificate was Signed by a CA
+
==View Certificate==
  
Use this command to verify that a certificate (domain.crt) was signed by a specific CA certificate (ca.crt):
+
File Certificate dan CSR di encode dalam format PEM, yang tidak bisa di baca oleh manusia.
  
openssl verify -verbose -CAFile ca.crt domain.crt
+
Bagian ini akan membahas perintah OpenSSL yang akan beroperasi dengan PEM-encoded file.
  
Private Keys
+
===View CSR Entries===
  
This section covers OpenSSL commands that are specific to creating and verifying private keys.
+
Perintah ini memungkinkan kita untuk melihat dan memverifikasi isi dari CSR (domain.csr) dalam bentuk plain text:
Create a Private Key
 
  
Use this command to create a password-protected, 2048-bit private key (domain.key):
+
openssl req -text -noout -verify -in domain.csr
  
openssl genrsa -des3 -out domain.key 2048
+
===View Certificate Entries===
  
Enter a password when prompted to complete the process.
+
Perintah ini memungkinkan untuk melihat isi dari certificate (domain.crt) dalam bentuk plain text:
Verify a Private Key
 
  
Use this command to check that a private key (domain.key) is a valid key:
+
openssl x509 -text -noout -in domain.crt
  
openssl rsa -check -in domain.key
+
===Verify a Certificate was Signed by a CA===
  
If your private key is encrypted, you will be prompted for its pass phrase. Upon success, the unencrypted key will be output on the terminal.
+
Perintah ini untuk memverifikasi certificate (domain.crt) yang di tanda tangani oleh CA certificate (ca.crt):
Verify a Private Key Matches a Certificate and CSR
 
  
Use these commands to verify if a private key (domain.key) matches a certificate (domain.crt) and CSR (domain.csr):
+
openssl verify -verbose -CAFile ca.crt domain.crt
  
openssl rsa -noout -modulus -in domain.key | openssl md5
+
==Private Key==
openssl x509 -noout -modulus -in domain.crt | openssl md5
 
openssl req -noout -modulus -in domain.csr | openssl md5
 
  
If the output of each command is identical there is an extremely high probability that the private key, certificate, and CSR are related.
+
Bagian ini akan membahas perintah OpenSSL yang berkaitan dengan pembuatan dan verifikasi private key.
Encrypt a Private Key
 
  
This takes an unencrypted private key (unencrypted.key) and outputs an encrypted version of it (encrypted.key):
+
===Create a Private Key===
  
openssl rsa -des3 \
+
Gunakan perintah ini untuk membuat sebuah password-protected, 2048-bit private key (domain.key):
      -in unencrypted.key \
 
      -out encrypted.key
 
  
Enter your desired pass phrase, to encrypt the private key with.
+
openssl genrsa -des3 -out domain.key 2048
Decrypt a Private Key
 
  
This takes an encrypted private key (encrypted.key) and outputs a decrypted version of it (decrypted.key):
+
Masukan password jika di tanya, saat menyelesaikan proses.
  
openssl rsa \
+
===Verify a Private Key===
      -in encrypted.key \
 
      -out decrypted.key
 
  
Enter the pass phrase for the encrypted key when prompted.
+
Gunakan perintah ini untuk mencek apakah sebuah private key (domain.key) adalah valid key:
Convert Certificate Formats
 
  
All of the certificates that we have been working with have been X.509 certificates that are ASCII PEM encoded. There are a variety of other certificate encoding and container types; some applications prefer certain formats over others. Also, many of these formats can contain multiple items, such as a private key, certificate, and CA certificate, in a single file.
+
openssl rsa -check -in domain.key
  
OpenSSL can be used to convert certificates to and from a large variety of these formats. This section will cover a some of the possible conversions.
+
Jika private key anda di enkripsi, anda akan ditanyakan pass phrase.
Convert PEM to DER
+
Jika sukses, key yang tidak di enkripsi akan di keluarkan pada terminal.
  
Use this command if you want to convert a PEM-encoded certificate (domain.crt) to a DER-encoded certificate (domain.der), a binary format:
+
===Verify a Private Key Matches a Certificate and CSR===
  
openssl x509 \
+
Gunakan perintah ini untuk mem-verifikasi apakah sebuah private key (domain.key) cocok dengan certificate (domain.crt) dan CSR (domain.csr) sebuah domain:
      -in domain.crt \
 
      -outform der -out domain.der
 
  
The DER format is typically used with Java.
+
openssl rsa -noout -modulus -in domain.key | openssl md5
Convert DER to PEM
+
openssl x509 -noout -modulus -in domain.crt | openssl md5
 +
openssl req -noout -modulus -in domain.csr | openssl md5
  
Use this command if you want to convert a DER-encoded certificate (domain.der) to a PEM-encoded certificate (domain.crt):
+
Jika output masing-masing perintah ini sama, maka kemungkinan besar private key, certificate, dan CSR saling terkait / berhubungan.
  
openssl x509 \
+
===Encrypt a Private Key===
      -inform der -in domain.der \
 
      -out domain.crt
 
  
Convert PEM to PKCS7
+
Perintah ini akan mengambil unencrypted private key (unencrypted.key) dan mengeluarkan encrypted private key (encrypted.key):
  
Use this command if you want to add PEM certificates (domain.crt and ca-chain.crt) to a PKCS7 file (domain.p7b):
+
openssl rsa -des3 \
 +
        -in unencrypted.key \
 +
        -out encrypted.key
  
openssl crl2pkcs7 -nocrl \
+
Masukan pass phrase yang anda inginkan untuk meng-encrypt private key tersebut.
      -certfile domain.crt \
 
      -certfile ca-chain.crt \
 
      -out domain.p7b
 
  
Note that you can use one or more -certfile options to specify which certificates to add to the PKCS7 file.
+
===Decrypt a Private Key===
  
PKCS7 files, also known as P7B, are typically used in Java Keystores and Microsoft IIS (Windows). They are ASCII files which can contain certificates and CA certificates.
+
Ini akan mengambil encrypted private key (encrypted.key) dan mengeluarkan decrypted private key (decrypted.key):
Convert PKCS7 to PEM
 
  
Use this command if you want to convert a PKCS7 file (domain.p7b) to a PEM file:
+
openssl rsa \
 +
        -in encrypted.key \
 +
        -out decrypted.key
  
openssl pkcs7 \
+
Masukan pass phrase untuk encrypted key saat ditanyakan.
      -in domain.p7b \
 
      -print_certs -out domain.crt
 
  
Note that if your PKCS7 file has multiple items in it (e.g. a certificate and a CA intermediate certificate), the PEM file that is created will contain all of the items in it.
+
==Convert Certificate Format==
Convert PEM to PKCS12
 
  
Use this command if you want to take a private key (domain.key) and a certificate (domain.crt), and combine them into a PKCS12 file (domain.pfx):
+
Semua sertifikat yang telah kita kerjakan adalah sertifikat X.509 yang dikodekan ASCII. Ada berbagai jenis pengkodean dan wadah sertifikat lainnya; Beberapa aplikasi lebih memilih format tertentu daripada yang lain. Selain itu, banyak format ini dapat berisi beberapa item, seperti sertifikat kunci pribadi, sertifikat, dan CA, dalam satu file.
  
openssl pkcs12 \
+
OpenSSL dapat digunakan untuk mengkonversi sertifikat ke dan dari berbagai format ini. Bagian ini akan mencakup beberapa kemungkinan konversi.
      -inkey domain.key \
 
      -in domain.crt \
 
      -export -out domain.pfx
 
  
You will be prompted for export passwords, which you may leave blank. Note that you may add a chain of certificates to the PKCS12 file by concatenating the certificates together in a single PEM file (domain.crt) in this case.
+
===Convert PEM ke DER===
  
PKCS12 files, also known as PFX files, are typically used for importing and exporting certificate chains in Micrsoft IIS (Windows).
+
Gunakan perintah berikut jika anda ingin convert a PEM-encoded certificate (domain.crt) ke DER-encoded certificate (domain.der), sebuah format binary:
Convert PKCS12 to PEM
 
  
Use this command if you want to convert a PKCS12 file (domain.pfx) and convert it to PEM format (domain.combined.crt):
+
openssl x509 \
 +
        -in domain.crt \
 +
        -outform der -out domain.der
  
openssl pkcs12 \
+
Format DER biasanya digunakan di Java.
      -in domain.pfx \
 
      -nodes -out domain.combined.crt
 
  
Note that if your PKCS12 file has multiple items in it (e.g. a certificate and private key), the PEM file that is created will contain all of the items in it.
+
===Convert DER ke PEM===
OpenSSL Version
 
  
The openssl version command can be used to check which version you are running. The version of OpenSSL that you are running, and the options it was compiled with affect the capabilities (and sometimes the command line options) that are available to you.
+
Gunakan perinntah ini untuk convert a DER-encoded certificate (domain.der) ke PEM-encoded certificate (domain.crt):
  
The following command displays the OpenSSL version that you are running, and all of the options that it was compiled with:
+
openssl x509 \
 +
        -inform der -in domain.der \
 +
        -out domain.crt
  
openssl version -a
+
===Convert PEM to PKCS7===
  
This guide was written using an OpenSSL binary with the following details (the output of the previous command):
+
Gunakan perintah ini jika anda ingin menambahkan PEM certificates (domain.crt dan ca-chain.crt) ke file PKCS7 (domain.p7b):
  
OpenSSL 1.0.1f 6 Jan 2014
+
  openssl crl2pkcs7 -nocrl \
built on: Mon Apr 7 21:22:23 UTC 2014
+
        -certfile domain.crt \
platform: debian-amd64
+
        -certfile ca-chain.crt \
options:  bn(64,64) rc4(16x,int) des(idx,cisc,16,int) blowfish(idx)
+
        -out domain.p7b
compiler: cc -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -DTERMIO -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wa,--noexecstack -Wall -DMD32_REG_T=int -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM
 
OPENSSLDIR: "/usr/lib/ssl"
 
  
Conclusion
+
Catatan bahwa anda bisa menggunakan satu atau lebih opsi -certfile untuk memberitahukan certificate mana yang akan ditambahkan ke file PKCS7 .
  
That should cover how most people use OpenSSL to deal with SSL certs! It has many other uses that were not covered here, so feel free to ask or suggest other uses in the comments.
+
File PKCS7, juga di kenal sebagai P7B, biasanya digunakan di Java Keystores dan Microsoft IIS (Windows). Ini adalah file ASCII yang berisi certificate dan CA certificate.
  
If you are having issues with any of the commands, be sure to comment (and include your OpenSSL version output).
+
===Convert PKCS7 ke PEM===
  
 +
Gunakan perintah ini jika kita ingin convert PKCS7 file (domain.p7b) ke PEM file:
  
 +
openssl pkcs7 \
 +
        -in domain.p7b \
 +
        -print_certs -out domain.crt
 +
 +
Perlu di catat jika PKCS7 file anda mempunyai banyak item dalamnya (misalnya certificate dan CA intermediate certificate), maka PEM file yang dibuat akan berisi semua item tersebut.
 +
 +
===Convert PEM ke PKCS12===
 +
 +
Gunakan perintah ini jika anda ingin mengambil private key (domain.key) dan sebuah certificate (domain.crt), dan menggabungkannya menjadi PKCS12 file (domain.pfx):
 +
 +
openssl pkcs12 \
 +
        -inkey domain.key \
 +
        -in domain.crt \
 +
        -export -out domain.pfx
 +
 +
Anda akan di tanyakan untuk export password, yang mana dapat anda biarkan kosong. Perlu di catat bahwa anda dapat menambahkan rantai certificate ke PKCS12 file dengan cara menyambungkan semua certificate ini menjadi sebuah PEM file (domain.crt).
 +
 +
PKCS12 files, juga dikenal sebagai PFX file, biasanya digunakan untuk import dan export certificate chain di Micrsoft IIS (Windows).
 +
 +
===Convert PKCS12 ke PEM===
 +
 +
Gunakan perintah ini jika anda ingin convert PKCS12 file (domain.pfx) dan mengkonversikan-nya ke PEM format (domain.combined.crt):
 +
 +
openssl pkcs12 \
 +
        -in domain.pfx \
 +
        -nodes -out domain.combined.crt
 +
 +
Perlu di catat bahwa PKCS12 file mempunyai banyak item di dalamnya (seperti certificate dan private key), PEM file yang dibuat akan berisi semua item tersebut di dalamnya.
 +
 +
==OpenSSL Version==
 +
 +
Perintah versi openssl dapat digunakan untuk memeriksa versi yang anda jalankan. Versi OpenSSL yang anda jalankan, dan opsi yang dikompilasi dengan mempengaruhi kemampuan (dan terkadang opsi CLI) yang tersedia untuk anda.
 +
 +
Perintah berikut menampilkan versi OpenSSL yang anda jalankan, dan semua opsi yang dikompilasi dengan:
 +
 +
openssl version -a
 +
 +
Panduan ini ditulis menggunakan biner OpenSSL dengan rincian sebagai berikut (output dari perintah sebelumnya):
 +
 +
OpenSSL 1.0.2g-fips  1 Mar 2016
 +
built on: reproducible build, date unspecified
 +
platform: debian-amd64
 +
options:  bn(64,64) rc4(16x,int) des(idx,cisc,16,int) blowfish(idx)
 +
compiler: cc -I. -I.. -I../include  -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wa,--noexecstack -Wall -DMD32_REG_T=int -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM
 +
OPENSSLDIR: "/usr/lib/ssl"
  
 
==Referensi==
 
==Referensi==
  
 
* https://www.digitalocean.com/community/tutorials/openssl-essentials-working-with-ssl-certificates-private-keys-and-csrs
 
* https://www.digitalocean.com/community/tutorials/openssl-essentials-working-with-ssl-certificates-private-keys-and-csrs

Latest revision as of 05:07, 11 June 2017

sumber: https://www.digitalocean.com/community/tutorials/openssl-essentials-working-with-ssl-certificates-private-keys-and-csrs


Introduction

OpenSSL adalah tool CLI serbaguna yang dapat digunakan untuk berbagai macam tugas yang berkaitan dengan Public Key Infrastructure (PKI) dan HTTPS (HTTP over TLS). Panduan gaya cheat sheet ini memberikan referensi cepat untuk perintah OpenSSL yang berguna dalam umum, skenario sehari-hari. Ini termasuk contoh OpenSSL untuk menghasilkan kunci pribadi, permintaan penandatanganan sertifikat, dan konversi format sertifikat. Ini tidak mencakup semua penggunaan OpenSSL.

Cara menggunakan panduan ini:

  • Jika Anda tidak terbiasa dengan Certificate Signing Request (CSR), baca bagian pertama.
  • Selain bagian pertama, panduan ini ada dalam format cheat sheet sederhana -- cuplikan contoh perintah
  • Loncat ke menu yang anda butuhkan
  • Kebanyakan perintah yang digunakan adalah satu kalimat. Di expand menjadi banyak kalimat menggunakan simbol \ untuk memudahkan dalam membaca.

Tentang Certificate Signing Request (CSR)

Jika anda ingin mendapatkan sertifikat SSL dari otoritas sertifikat (CA), anda harus membuat Certificate Signing Request (CSR). CSR terdiri dari kunci publik dari pasangan kunci, dan beberapa informasi tambahan. Kedua komponen ini dimasukkan ke dalam sertifikat saat ditandatangani.

Kapan pun anda membuat CSR, anda akan diminta untuk memberikan informasi mengenai sertifikat tersebut. Informasi ini dikenal dengan nama Distinguised Name (DN). Bagian penting di DN adalah Common Name (CN), yang seharusnya merupakan Fully Qualified Domain Name (FQDN) dari host yang ingin anda gunakan dengan sertifikat. Juga memungkinkan untuk melewatkan petunjuk interaktif saat membuat CSR dengan menyampaikan informasi melalui baris perintah atau dari sebuah file..

Parameter lainnya di DN memberikan informasi tambahan tentang bisnis atau organisasi anda. Jika anda membeli sertifikat SSL dari otoritas sertifikat, sering diperlukan agar bidang tambahan ini, seperti "Organisasi", mencerminkan secara akurat rincian organisasi anda.

Berikut adalah contoh dari apa informasi CSR akan terlihat seperti:

---
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:New York
Locality Name (eg, city) []:Brooklyn
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Example Brooklyn Company
Organizational Unit Name (eg, section) []:Technology Division
Common Name (e.g. server FQDN or YOUR name) []:examplebrooklyn.com
Email Address []:

Jika anda ingin secara noninteraktif menjawab permintaan informasi CSR, anda dapat melakukannya dengan menambahkan opsi -subj ke perintah OpenSSL yang meminta informasi CSR. Berikut adalah contoh pilihannya, dengan menggunakan informasi yang sama yang ditampilkan di blok kode di atas:

-subj "/C=US/ST=New York/L=Brooklyn/O=Example Brooklyn Company/CN=examplebrooklyn.com"

Generating CSR

Bakan ini akan membahas tentang perintah OpenSSL yang berhubungan dengan generating CSR (dan private key, jika belum ada). CSR digunakan untuk permohonan certificate SSL dari Certificate Authority (CA).

Jika anda ingin memasukan informasi CSR secara non-interaktif dapat menggunakan opsi -subj

Generate Private Key dan CSR

Gunakan metoda ini jika anda ingin menggunakan HTTPS (HTTP over TLS) untuk mengamankan Apache HTTP atau Nginx web server, dan anda menginginkan untuk menggunakan Certificate Authority (CA) untuk issue SSL certificate. CSR yang dihasilkan dapat dikirim ke CA untuk meminta penerbitan sertifikat SSL yang ditandatangani CA. Jika CA anda mendukung SHA-2, tambahkan opsi -sha256 untuk menandatangani CSR dengan SHA-2.

Perintah berikut akan membuat 2048-bit private key (domain.key) dan CSR (domain.csr) dari nol:

openssl req \
       -newkey rsa:2048 -nodes -keyout domain.key \
       -out domain.csr

Jawab informasi yang dibutuhkan CSR untuk menyelesaikan proses.

  • -newkey rsa:2048 mensyaratkan agar key menggunakan 2048-bit, dan dibuat menggunakan algoritma RSA .
  • -nodes mensyaratkan bahwa private key tidak di enkripsi dengan pass phrase.
  • -new - tidak di lakukan dalam contoh di atas, mengindikasikan bahwa CSR harus dibuat.

Generate a CSR from an Existing Private Key

Gunakan metoda ini jika anda sudah memiliki private key yang ingin anda gunakan untuk request sebuah certificate dari CA.

Perintah ini akan membuat CSR baru (domain.csr) berbasis pada private key (domain.key) yang sudah ada:

openssl req \
       -key domain.key \
       -new -out domain.csr

Jawab informasi yang dibutuhkan CSR untuk menyelesaikan proses.

  • -key mensyaratkan private key (domain.key) yang ada akan digunakan untuk membuat CSR baru.
  • -new mengindikasikan bahwa CSR harus dibuat.

Generate a CSR from an Existing Certificate and Private Key

Gunakan metoda ini jika anda ingin me-renew certificate yang ada tapi anda & CA anda tidak mempunyai CSR yang asli karena satu dan lain hal. Ini pada dasarnya akan memudahkan untuk tidak memasukan ulang informasi CSR, karena dia akan mengekstrak dari certificate yang ada.

Perintah ini pada dasarnya membuat CSR baru (domain.csr) berbasis pada certificate yang ada (domain.crt) dan private key (domain.key):

openssl x509 \
       -in domain.crt \
       -signkey domain.key \
       -x509toreq -out domain.csr

Opsi -x509toreq mengindikasikan kalau kita menggunakan certificate X509 untuk membuat CSR.

Generating SSL Certificates

Jika anda ingin menggunakan sertifikat SSL untuk mendapatkan layanan namun anda tidak memerlukan sertifikat yang ditandatangani oleh CA, solusi yang sah (dan gratis) adalah menandatangani sertifikat anda sendiri.

Jenis sertifikat yang umum yang dapat anda gunakan sendiri adalah sertifikat yang ditandatangani sendiri. Sertifikat yang ditandatangani sendiri adalah sertifikat yang ditandatangani dengan kunci privatnya sendiri. Sertifikat yang ditandatangani sendiri dapat digunakan untuk mengenkripsi data sama seperti sertifikat yang ditandatangani oleh CA, namun pengguna Anda akan ditampilkan peringatan yang mengatakan bahwa sertifikat tersebut tidak dipercaya oleh komputer atau browser mereka. Oleh karena itu, sertifikat yang ditandatangani sendiri hanya boleh digunakan jika anda tidak perlu membuktikan identitas layanan anda kepada penggunanya (misalnya server non-produksi atau non-publik).

Bagian ini mencakup perintah OpenSSL yang terkait dengan pembuatan sertifikat self-signed.

Generate a Self-Signed Certificate

Gunakan metode ini jika anda ingin menggunakan HTTPS (HTTP over TLS) untuk mengamankan server web Apache HTTP atau Nginx anda, dan anda tidak mengharuskan sertifikat anda ditandatangani oleh CA.

Perintah ini akan membuat 2048-bit private key (domain.key) dan self-signed certificate (domain.crt) dari NOL:

openssl req \
       -newkey rsa:2048 -nodes -keyout domain.key \
       -x509 -days 365 -out domain.crt

Jawab informasi yang dibutuhkan CSR untuk menyelesaikan proses.

  • Opsi -x509 memberitahukan req untuk membuat self-signed cerificate.
  • Opsi -days 365 mensyaratkan certificate akan valid untuk 365 days.
  • Temporary CSR akan dibuat untuk mengumpulkan informasi terkait dengan certificate.

Generate a Self-Signed Certificate from an Existing Private Key

Gunakan metoda ini jika anda sudah mempunyai private key yang ingin digunakan untuk membuat self-signed certificate .

Perintah berikut akan membuat self-signed certificate (domain.crt) dari private key (domain.key) yang ada:

openssl req \
       -key domain.key \
       -new \
       -x509 -days 365 -out domain.crt

Jawab informasi yang dibutuhkan CSR untuk menyelesaikan proses.

  • Opsi -x509 memberitahukan req untuk membuat self-signed cerificate.
  • Opsi -days 365 mensyaratkan certificate akan valid untuk 365 days.
  • Opsi -new mengaktifkan CSR information prompt.

Generate a Self-Signed Certificate from an Existing Private Key and CSR

Gunakan metoda ini jika anda sudah mempunyai private key dan CSR, dan anda ingin membuat self-signed certificate.

Perintah ini membuat self-signed certificate (domain.crt) dari private key (domain.key) dan (domain.csr) yang ada:

openssl x509 \
       -signkey domain.key \
       -in domain.csr \
       -req -days 365 -out domain.crt
  • Opsi -days 365 mensyaratkan certificate akan valid untuk 365 days.

View Certificate

File Certificate dan CSR di encode dalam format PEM, yang tidak bisa di baca oleh manusia.

Bagian ini akan membahas perintah OpenSSL yang akan beroperasi dengan PEM-encoded file.

View CSR Entries

Perintah ini memungkinkan kita untuk melihat dan memverifikasi isi dari CSR (domain.csr) dalam bentuk plain text:

openssl req -text -noout -verify -in domain.csr

View Certificate Entries

Perintah ini memungkinkan untuk melihat isi dari certificate (domain.crt) dalam bentuk plain text:

openssl x509 -text -noout -in domain.crt

Verify a Certificate was Signed by a CA

Perintah ini untuk memverifikasi certificate (domain.crt) yang di tanda tangani oleh CA certificate (ca.crt):

openssl verify -verbose -CAFile ca.crt domain.crt

Private Key

Bagian ini akan membahas perintah OpenSSL yang berkaitan dengan pembuatan dan verifikasi private key.

Create a Private Key

Gunakan perintah ini untuk membuat sebuah password-protected, 2048-bit private key (domain.key):

openssl genrsa -des3 -out domain.key 2048

Masukan password jika di tanya, saat menyelesaikan proses.

Verify a Private Key

Gunakan perintah ini untuk mencek apakah sebuah private key (domain.key) adalah valid key:

openssl rsa -check -in domain.key

Jika private key anda di enkripsi, anda akan ditanyakan pass phrase. Jika sukses, key yang tidak di enkripsi akan di keluarkan pada terminal.

Verify a Private Key Matches a Certificate and CSR

Gunakan perintah ini untuk mem-verifikasi apakah sebuah private key (domain.key) cocok dengan certificate (domain.crt) dan CSR (domain.csr) sebuah domain:

openssl rsa -noout -modulus -in domain.key | openssl md5
openssl x509 -noout -modulus -in domain.crt | openssl md5
openssl req -noout -modulus -in domain.csr | openssl md5

Jika output masing-masing perintah ini sama, maka kemungkinan besar private key, certificate, dan CSR saling terkait / berhubungan.

Encrypt a Private Key

Perintah ini akan mengambil unencrypted private key (unencrypted.key) dan mengeluarkan encrypted private key (encrypted.key):

openssl rsa -des3 \
       -in unencrypted.key \
       -out encrypted.key

Masukan pass phrase yang anda inginkan untuk meng-encrypt private key tersebut.

Decrypt a Private Key

Ini akan mengambil encrypted private key (encrypted.key) dan mengeluarkan decrypted private key (decrypted.key):

openssl rsa \
       -in encrypted.key \
       -out decrypted.key

Masukan pass phrase untuk encrypted key saat ditanyakan.

Convert Certificate Format

Semua sertifikat yang telah kita kerjakan adalah sertifikat X.509 yang dikodekan ASCII. Ada berbagai jenis pengkodean dan wadah sertifikat lainnya; Beberapa aplikasi lebih memilih format tertentu daripada yang lain. Selain itu, banyak format ini dapat berisi beberapa item, seperti sertifikat kunci pribadi, sertifikat, dan CA, dalam satu file.

OpenSSL dapat digunakan untuk mengkonversi sertifikat ke dan dari berbagai format ini. Bagian ini akan mencakup beberapa kemungkinan konversi.

Convert PEM ke DER

Gunakan perintah berikut jika anda ingin convert a PEM-encoded certificate (domain.crt) ke DER-encoded certificate (domain.der), sebuah format binary:

openssl x509 \
       -in domain.crt \
       -outform der -out domain.der

Format DER biasanya digunakan di Java.

Convert DER ke PEM

Gunakan perinntah ini untuk convert a DER-encoded certificate (domain.der) ke PEM-encoded certificate (domain.crt):

openssl x509 \
       -inform der -in domain.der \
       -out domain.crt

Convert PEM to PKCS7

Gunakan perintah ini jika anda ingin menambahkan PEM certificates (domain.crt dan ca-chain.crt) ke file PKCS7 (domain.p7b):

openssl crl2pkcs7 -nocrl \
       -certfile domain.crt \
       -certfile ca-chain.crt \
       -out domain.p7b

Catatan bahwa anda bisa menggunakan satu atau lebih opsi -certfile untuk memberitahukan certificate mana yang akan ditambahkan ke file PKCS7 .

File PKCS7, juga di kenal sebagai P7B, biasanya digunakan di Java Keystores dan Microsoft IIS (Windows). Ini adalah file ASCII yang berisi certificate dan CA certificate.

Convert PKCS7 ke PEM

Gunakan perintah ini jika kita ingin convert PKCS7 file (domain.p7b) ke PEM file:

openssl pkcs7 \
       -in domain.p7b \
       -print_certs -out domain.crt

Perlu di catat jika PKCS7 file anda mempunyai banyak item dalamnya (misalnya certificate dan CA intermediate certificate), maka PEM file yang dibuat akan berisi semua item tersebut.

Convert PEM ke PKCS12

Gunakan perintah ini jika anda ingin mengambil private key (domain.key) dan sebuah certificate (domain.crt), dan menggabungkannya menjadi PKCS12 file (domain.pfx):

openssl pkcs12 \
       -inkey domain.key \
       -in domain.crt \
       -export -out domain.pfx

Anda akan di tanyakan untuk export password, yang mana dapat anda biarkan kosong. Perlu di catat bahwa anda dapat menambahkan rantai certificate ke PKCS12 file dengan cara menyambungkan semua certificate ini menjadi sebuah PEM file (domain.crt).

PKCS12 files, juga dikenal sebagai PFX file, biasanya digunakan untuk import dan export certificate chain di Micrsoft IIS (Windows).

Convert PKCS12 ke PEM

Gunakan perintah ini jika anda ingin convert PKCS12 file (domain.pfx) dan mengkonversikan-nya ke PEM format (domain.combined.crt):

openssl pkcs12 \
       -in domain.pfx \
       -nodes -out domain.combined.crt

Perlu di catat bahwa PKCS12 file mempunyai banyak item di dalamnya (seperti certificate dan private key), PEM file yang dibuat akan berisi semua item tersebut di dalamnya.

OpenSSL Version

Perintah versi openssl dapat digunakan untuk memeriksa versi yang anda jalankan. Versi OpenSSL yang anda jalankan, dan opsi yang dikompilasi dengan mempengaruhi kemampuan (dan terkadang opsi CLI) yang tersedia untuk anda.

Perintah berikut menampilkan versi OpenSSL yang anda jalankan, dan semua opsi yang dikompilasi dengan:

openssl version -a

Panduan ini ditulis menggunakan biner OpenSSL dengan rincian sebagai berikut (output dari perintah sebelumnya):

OpenSSL 1.0.2g-fips  1 Mar 2016
built on: reproducible build, date unspecified
platform: debian-amd64
options:  bn(64,64) rc4(16x,int) des(idx,cisc,16,int) blowfish(idx) 
compiler: cc -I. -I.. -I../include  -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wa,--noexecstack -Wall -DMD32_REG_T=int -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM
OPENSSLDIR: "/usr/lib/ssl"

Referensi