Saya menambahkan dukungan HTTPS ke perangkat Linux tertanam. Saya telah mencoba membuat sertifikat yang ditandatangani sendiri dengan langkah-langkah ini:
openssl req -new > cert.csr
openssl rsa -in privkey.pem -out key.pem
openssl x509 -in cert.csr -out cert.pem -req -signkey key.pem -days 1001
cat key.pem>>cert.pem
Ini berfungsi, tetapi saya mendapatkan beberapa kesalahan dengan, misalnya, Google Chrome:
Ini mungkin bukan situs yang Anda cari!
Sertifikat keamanan situs tidak tepercaya!
Apakah saya melewatkan sesuatu? Apakah ini cara yang benar untuk membangun sertifikat yang ditandatangani sendiri?
ssl
openssl
certificate
ssl-certificate
x509certificate
michelemarcon
sumber
sumber
alternate_names
bagian dan memberikannya dengan-config
opsi. Juga, menempatkan nama DNS di Common Name (CN) sudah usang (tetapi tidak dilarang) oleh IETF dan CA / Browser Forum. Setiap nama DNS di CN juga harus ada di SAN. Tidak ada cara untuk menghindari penggunaan SAN. Lihat jawaban di bawah ini.Jawaban:
Anda dapat melakukannya dalam satu perintah:
Anda juga dapat menambahkan
-nodes
(kependekanno DES
) jika Anda tidak ingin melindungi kunci pribadi Anda dengan frasa sandi. Kalau tidak, akan diminta kata sandi "setidaknya 4 karakter".The
days
parameter (365) Anda dapat mengganti dengan nomor apapun untuk mempengaruhi tanggal kedaluwarsa. Ini kemudian akan meminta Anda untuk hal-hal seperti "Nama Negara", tetapi Anda bisa menekan Enterdan menerima default.Tambahkan
-subj '/CN=localhost'
untuk menekan pertanyaan tentang konten sertifikat (gantilocalhost
dengan domain yang Anda inginkan).Sertifikat yang ditandatangani sendiri tidak divalidasi dengan pihak ketiga mana pun kecuali Anda mengimpornya sebelumnya ke browser. Jika Anda membutuhkan keamanan lebih, Anda harus menggunakan sertifikat yang ditandatangani oleh otoritas sertifikat (CA).
sumber
-subj "/C=US/ST=Oregon/L=Portland/O=Company Name/OU=Org/CN=www.example.com"
-sha256
untuk menghasilkan sertifikat berbasis SHA-256.Sangat mudah untuk membuat sertifikat yang ditandatangani sendiri. Anda cukup menggunakan
openssl req
perintah. Mungkin sulit untuk membuatnya yang bisa dikonsumsi oleh pilihan klien terbesar, seperti browser dan alat baris perintah.Ini sulit karena browser memiliki set persyaratan sendiri, dan mereka lebih ketat daripada IETF . Persyaratan yang digunakan oleh browser didokumentasikan di CA / Browser Forum (lihat referensi di bawah). Pembatasan muncul dalam dua bidang utama: (1) jangkar kepercayaan, dan (2) nama DNS.
Peramban modern (seperti warez yang kami gunakan pada 2014/2015) menginginkan sertifikat yang menghubungkan kembali ke jangkar kepercayaan, dan mereka ingin nama DNS disajikan dengan cara tertentu dalam sertifikat. Dan browser secara aktif bergerak melawan sertifikat server yang ditandatangani sendiri.
Beberapa browser tidak benar-benar membuatnya mudah untuk mengimpor sertifikat server yang ditandatangani sendiri. Faktanya, Anda tidak dapat menggunakan beberapa peramban, seperti peramban Android. Jadi solusi lengkapnya adalah menjadi otoritas Anda sendiri.
Dengan tidak adanya otoritas Anda sendiri, Anda harus mendapatkan hak nama DNS untuk memberikan sertifikat peluang sukses terbesar. Tetapi saya akan mendorong Anda untuk menjadi otoritas Anda sendiri. Sangat mudah untuk menjadi otoritas Anda sendiri, dan itu akan menghindari semua masalah kepercayaan (siapa yang lebih baik untuk dipercaya daripada diri Anda sendiri?).
Ini karena browser menggunakan daftar jangkar trust yang telah ditentukan untuk memvalidasi sertifikat server. Sertifikat yang ditandatangani sendiri tidak mengikat kembali ke jangkar tepercaya.
Cara terbaik untuk menghindari ini adalah:
Langkah 1 - Buat otoritas Anda sendiri hanya berarti membuat sertifikat yang ditandatangani sendiri dengan
CA: true
dan penggunaan kunci yang tepat. Itu berarti Subjek dan Penerbit adalah entitas yang sama, CA disetel ke true dalam Kendala Dasar (itu juga harus ditandai sebagai kritis), penggunaan kunci adalahkeyCertSign
dancrlSign
(jika Anda menggunakan CRL), dan Subjek Key Identifier (SKI) adalah sama dengan Pengidentifikasi Kunci Otoritas (AKI).Untuk menjadi otoritas sertifikat Anda sendiri, lihat * Bagaimana Anda menandatangani permintaan penandatanganan sertifikat dengan otoritas sertifikasi Anda? pada Stack Overflow. Kemudian, impor CA Anda ke Trust Store yang digunakan oleh browser.
Langkah 2 - 4 kira-kira apa yang Anda lakukan sekarang untuk server yang menghadap publik ketika Anda mendaftar layanan CA seperti Startcom atau CAcert . Langkah 1 dan 5 memungkinkan Anda untuk menghindari otoritas pihak ketiga, dan bertindak sebagai otoritas Anda sendiri (siapa yang lebih bisa dipercaya daripada diri Anda sendiri?).
Cara terbaik berikutnya untuk menghindari peringatan browser adalah dengan mempercayai sertifikat server. Tetapi beberapa browser, seperti browser default Android, jangan biarkan Anda melakukannya. Jadi itu tidak akan bekerja pada platform.
Masalah browser (dan agen pengguna serupa lainnya) tidak mempercayai sertifikat yang ditandatangani sendiri akan menjadi masalah besar di Internet of Things (IoT). Misalnya, apa yang akan terjadi ketika Anda terhubung ke termostat atau kulkas untuk memprogramnya? Jawabannya adalah, tidak ada yang baik sejauh pengalaman pengguna yang bersangkutan.
Kelompok Kerja WebAppSec W3C mulai melihat masalah ini. Lihat, misalnya, Proposal: Menandai HTTP Sebagai Tidak Aman .
Perintah di bawah ini dan file konfigurasi membuat sertifikat yang ditandatangani sendiri (ini juga menunjukkan kepada Anda cara membuat permintaan penandatanganan). Mereka berbeda dari jawaban lain dalam satu hal: nama DNS yang digunakan untuk sertifikat yang ditandatangani sendiri adalah dalam Nama Alternatif Subjek (SAN) , dan bukan Nama Umum (CN) .
Nama DNS ditempatkan di SAN melalui file konfigurasi dengan baris
subjectAltName = @alternate_names
(tidak ada cara untuk melakukannya melalui baris perintah). Lalu adaalternate_names
bagian dalam file konfigurasi (Anda harus menyetel ini sesuai dengan selera Anda):Penting untuk menempatkan nama DNS di SAN dan bukan CN, karena baik IETF dan CA / Browser Forum menentukan praktiknya. Mereka juga menentukan bahwa nama-nama DNS di CN sudah usang (tetapi tidak dilarang). Jika Anda memasukkan nama DNS di CN, maka itu harus dimasukkan dalam SAN di bawah kebijakan CA / B. Jadi, Anda tidak dapat menghindari menggunakan Nama Alternatif Subjek.
Jika Anda tidak memasukkan nama DNS di SAN, maka sertifikat akan gagal divalidasi di bawah browser dan agen pengguna lain yang mengikuti pedoman CA / Browser Forum.
Terkait: browser mengikuti kebijakan CA / Browser Forum; dan bukan kebijakan IETF. Itulah salah satu alasan sertifikat yang dibuat dengan OpenSSL (yang umumnya mengikuti IETF) kadang-kadang tidak divalidasi di bawah browser (browser mengikuti CA / B). Mereka adalah standar yang berbeda, mereka memiliki kebijakan penerbitan yang berbeda dan persyaratan validasi yang berbeda.
Buat sertifikat yang ditandatangani sendiri (perhatikan penambahan
-x509
opsi):Buat permintaan penandatanganan (perhatikan kurangnya
-x509
pilihan):Cetak sertifikat yang ditandatangani sendiri :
Cetak permintaan penandatanganan :
File konfigurasi (diteruskan melalui
-config
opsi)Anda mungkin perlu melakukan yang berikut untuk Chrome. Kalau tidak, Chrome mungkin mengeluh Nama Biasa tidak valid (
ERR_CERT_COMMON_NAME_INVALID
) . Saya tidak yakin apa hubungan antara alamat IP di SAN dan CN dalam hal ini.Ada aturan lain tentang penanganan nama DNS di sertifikat X.509 / PKIX. Lihat dokumen ini untuk aturan:
RFC 6797 dan RFC 7469 terdaftar, karena mereka lebih membatasi daripada RFC lain dan dokumen CA / B. RFC 6797 dan 7469 juga tidak mengizinkan alamat IP.
sumber
alternate_names
bagian ini? Khususnya sub-sub domain. Saya punya pertanyaan yang merujuk jawaban ini di sini: serverfault.com/questions/711596/…Berikut adalah opsi yang dijelaskan dalam jawaban @ diegows , dijelaskan secara lebih rinci, dari dokumentasi :
Dokumentasi sebenarnya lebih rinci daripada yang di atas; Saya baru saja merangkumnya di sini.
sumber
XXX
dalam perintah asli harus diganti dengan 'jumlah hari untuk mengesahkan sertifikat untuk'. Standarnya adalah 30 hari. Misalnya,-days XXX
menjadi-days 365
jika Anda ingin sertifikat Anda valid selama 365 hari. Lihat dokumen untuk lebih lanjut .Pada 2020, perintah berikut melayani semua kebutuhan Anda, termasuk SAN:
Dalam OpenSSL ≥ 1.1.1, ini dapat disingkat menjadi:
Itu menciptakan sertifikat
example.com
danexample.net
(SAN),10.0.0.1
(SAN),3650
hari (~ 10 tahun).Itu menciptakan file-file berikut:
example.key
example.crt
Semua informasi disediakan di baris perintah. Tidak ada input interaktif yang mengganggu Anda. Tidak ada file konfigurasi yang harus Anda mainkan. Semua langkah yang diperlukan dijalankan oleh satu permintaan OpenSSL : dari pembuatan kunci pribadi hingga sertifikat yang ditandatangani sendiri.
Komentar # 1: Parameter Crypto
Karena sertifikat ditandatangani sendiri dan perlu diterima oleh pengguna secara manual, tidak masuk akal untuk menggunakan kedaluwarsa singkat atau kriptografi yang lemah.
Di masa depan, Anda mungkin ingin menggunakan lebih dari
4096
bit untuk kunci RSA dan algoritma hash yang lebih kuat daripadasha256
, tetapi pada tahun 2020 ini adalah nilai yang waras. Mereka cukup kuat saat didukung oleh semua browser modern.Komentar # 2: Parameter "
-nodes
"Secara teoritis Anda dapat meninggalkan
-nodes
parameter (yang berarti "tidak ada enkripsi DES"), dalam hal iniexample.key
akan dienkripsi dengan kata sandi. Namun, ini hampir tidak pernah berguna untuk instalasi server, karena Anda harus menyimpan kata sandi di server juga, atau Anda harus memasukkannya secara manual pada setiap reboot.Komentar # 3: Lihat juga
sumber
//CN=localhost
bukan/CN=localhost
? Apakah melarikan diri yang tepat akan membantu di sini? Misalnya, apakah mengganti/CN=localhost
dengan"/CN=localhost"
menyelesaikan masalah dengan cara yang bersih?Saya tidak bisa berkomentar, jadi saya akan menempatkan ini sebagai jawaban terpisah. Saya menemukan beberapa masalah dengan jawaban satu baris yang diterima:
Berikut ini adalah versi sederhana yang menghilangkan frasa sandi, meningkatkan keamanan untuk menekan peringatan dan memasukkan saran dalam komentar untuk lulus -subj untuk menghapus daftar pertanyaan lengkap:
Ganti 'localhost' dengan domain apa pun yang Anda butuhkan. Anda perlu menjalankan dua perintah pertama satu per satu karena OpenSSL akan meminta frasa sandi.
Untuk menggabungkan keduanya menjadi file .pem:
sumber
cat server.crt server.key >foo-cert.pem
. Bekerja dengan contoh diopenssl-1.0.2d/demos/ssl/
FreeBSD 10
OpenLDAP 2.4
denganTLS
Browser modern sekarang membuat kesalahan keamanan untuk sertifikat yang ditandatangani sendiri jika tidak ada SAN (Nama Alternatif Subjek). OpenSSL tidak menyediakan cara baris perintah untuk menentukan ini , sehingga banyak tutorial dan bookmark pengembang yang tiba-tiba kedaluwarsa.
Cara tercepat untuk menjalankan kembali adalah file conf pendek, berdiri sendiri:
Buat file konfigurasi OpenSSL (contoh
req.cnf
:)Buat sertifikat referensi file konfigurasi ini
Contoh konfigurasi dari https://support.citrix.com/article/CTX135602
sumber
-sha256
.-extension 'subjectAltName = DNS:dom.ain, DNS:oth.er'
melihat github.com/openssl/openssl/pull/4986-addext
sekarang.Saya akan merekomendasikan untuk menambahkan parameter -sha256 , untuk menggunakan algoritma hash SHA-2, karena browser utama sedang mempertimbangkan untuk menunjukkan "sertifikat SHA-1" sebagai tidak aman.
Baris perintah yang sama dari jawaban yang diterima - @diegows dengan menambahkan -sha256
Informasi lebih lanjut di blog Google Security .
Perbarui Mei 2018. Seperti yang banyak dicatat dalam komentar bahwa menggunakan SHA-2 tidak menambah keamanan pada sertifikat yang ditandatangani sendiri. Tapi saya masih merekomendasikan menggunakannya sebagai kebiasaan yang baik untuk tidak menggunakan fungsi hash kriptografi yang sudah usang / tidak aman. Penjelasan lengkap tersedia di Mengapa sertifikat di atas entitas akhir boleh saja berbasis SHA-1? .
sumber
Ini adalah skrip yang saya gunakan pada kotak lokal untuk mengatur SAN (subjectAltName) dalam sertifikat yang ditandatangani sendiri.
Skrip ini mengambil nama domain (example.com) dan menghasilkan SAN untuk * .example.com dan example.com dalam sertifikat yang sama. Bagian di bawah ini dikomentari. Beri nama skrip (mis.
generate-ssl.sh
) Dan berikan izin yang dapat dieksekusi. File akan ditulis ke direktori yang sama dengan skrip.Chrome 58 dan selanjutnya mengharuskan SAN ditetapkan dalam sertifikat yang ditandatangani sendiri.
Skrip ini juga menulis file informasi, sehingga Anda dapat memeriksa sertifikat baru dan memverifikasi bahwa SAN telah diatur dengan benar.
Jika Anda menggunakan Apache, maka Anda dapat merujuk sertifikat di atas dalam file konfigurasi Anda seperti:
Ingatlah untuk memulai kembali server Apache (atau Nginx, atau IIS) Anda agar sertifikat baru berlaku.
sumber
localhost
atau127.0.0.1:port#
apa yang sesuaiCN
untuk sesuatu seperti ini.2017 satu-liner:
Ini juga berfungsi di Chrome 57, karena menyediakan SAN, tanpa memiliki file konfigurasi lain. Itu diambil dari jawaban di sini .
Ini menciptakan file .pem tunggal yang berisi kunci pribadi dan cert. Anda dapat memindahkannya untuk memisahkan file .pem jika diperlukan.
sumber
/etc/ssl/openssl.conf
karya Ubuntu saat iniSaya tidak bisa berkomentar jadi saya menambahkan jawaban yang terpisah. Saya mencoba membuat sertifikat yang ditandatangani sendiri untuk NGINX dan itu mudah, tetapi ketika saya ingin menambahkannya ke daftar putih Chrome, saya punya masalah. Dan solusi saya adalah membuat sertifikat Root dan menandatangani sertifikat anak.
Jadi selangkah demi selangkah. Buat file config_ssl_ca.cnf Perhatikan, file config memiliki opsi basicConstraints = CA: true yang berarti bahwa sertifikat ini seharusnya menjadi root.
File konfigurasi berikutnya untuk sertifikat anak Anda.
Langkah pertama - buat kunci Root dan sertifikat
Langkah kedua membuat kunci anak dan mengajukan CSR - Permintaan Penandatanganan Sertifikat. Karena idenya adalah untuk menandatangani sertifikat anak dengan root dan mendapatkan sertifikat yang benar
Buka terminal Linux dan lakukan perintah ini echo 0
The ca.srl file teks yang berisi nomor seri berikutnya untuk digunakan dalam hex. Wajib. File ini harus ada dan berisi nomor seri yang valid.
Langkah Terakhir, buat satu file konfigurasi lagi dan beri nama config_ca.cnf
Anda mungkin bertanya, mengapa sangat sulit, mengapa kita harus membuat satu konfigurasi lagi untuk menandatangani sertifikat anak oleh root. Jawabannya sederhana karena sertifikat anak harus memiliki blok SAN - Nama Alternatif Subjek. Jika kami menandatangani sertifikat anak dengan utils "openssl x509", sertifikat Root akan menghapus bidang SAN dalam sertifikat anak. Jadi kami menggunakan "openssl ca" bukannya "openssl x509" untuk menghindari penghapusan bidang SAN. Kami membuat file konfigurasi baru dan menyuruhnya untuk menyalin semua bidang yang diperluas copy_extensions = salin .
Program ini menanyakan 2 pertanyaan kepada Anda: 1. Menandatangani sertifikat? Katakan "Y" 2. 1 dari 1 permintaan sertifikat disertifikasi, komit? Katakan "Y"
Di terminal Anda dapat melihat kalimat dengan kata "Database", itu berarti file index.txt yang Anda buat dengan perintah "touch". Ini akan berisi semua informasi dengan semua sertifikat yang Anda buat dengan util "openssl ca". Untuk memeriksa sertifikat, gunakan valid:
Jika Anda ingin melihat isinya di dalam CRT:
Jika Anda ingin melihat bagian dalam CSR:
sumber
Anda memiliki prosedur umum yang benar. Sintaks untuk perintah di bawah ini.
Namun, peringatan ditampilkan, karena browser tidak dapat memverifikasi identifikasi dengan memvalidasi sertifikat dengan Otoritas Sertifikat (CA) yang dikenal.
Karena ini adalah sertifikat yang ditandatangani sendiri, tidak ada CA dan Anda dapat dengan aman mengabaikan peringatan itu dan melanjutkan. Jika Anda ingin mendapatkan sertifikat nyata yang akan dikenali oleh siapa pun di Internet publik maka prosedurnya di bawah ini.
Saya memiliki rincian lebih lanjut tentang ini di posting di Mengamankan Koneksi: Membuat Sertifikat Keamanan dengan OpenSSL
sumber
Satu liner FTW. Saya suka membuatnya sederhana. Mengapa tidak menggunakan satu perintah yang berisi SEMUA argumen yang dibutuhkan? Inilah yang saya suka - ini membuat sertifikat x509 dan kunci PEM-nya:
Perintah tunggal itu berisi semua jawaban yang biasanya Anda berikan untuk perincian sertifikat. Dengan cara ini Anda dapat mengatur parameter dan menjalankan perintah, dapatkan output Anda - lalu pergi untuk minum kopi.
>> Lebih lanjut di sini <<
sumber
Versi satu liner 2017:
CentOS:
Ubuntu:
Sunting: menambahkan opsi Slash ke 'subj' yang ditambahkan untuk Ubuntu.
sumber
Pada pengaturan saya, server Ubuntu login ke:
/var/log/mysql/error.log
Catatan tindak lanjut:
SSL error: Unable to get certificate from '...'
MySQL mungkin ditolak akses baca ke file sertifikat Anda jika tidak dalam konfigurasi aparatur . Seperti disebutkan dalam langkah sebelumnya ^, simpan semua sertifikat kami sebagai
.pem
file di/etc/mysql/
direktori yang disetujui secara default oleh apparmor (atau modifikasi apparmor / SELinux Anda untuk memungkinkan akses ke mana pun Anda menyimpannya.)SSL error: Unable to get private key
Versi server MySQL Anda mungkin tidak mendukung
rsa:2048
format defaultKonversi yang dihasilkan
rsa:2048
ke polosrsa
dengan:Periksa apakah server lokal mendukung SSL :
Memverifikasi koneksi ke database terenkripsi SSL :
Membutuhkan ssl untuk koneksi pengguna tertentu ('memerlukan ssl'):
Tautan alternatif: Tutorial yang panjang dalam Koneksi PHP Aman ke MySQL dengan SSL .
sumber
Seperti telah dibahas secara rinci, sertifikat yang ditandatangani sendiri tidak dipercaya untuk Internet . Anda dapat menambahkan sertifikat yang Anda tandatangani sendiri ke banyak tetapi tidak semua browser . Atau Anda dapat menjadi otoritas sertifikat Anda sendiri .
Alasan utama seseorang tidak ingin mendapatkan sertifikat yang ditandatangani dari otoritas sertifikat adalah biaya - biaya Symantec antara $ 995 - $ 1.999 per tahun untuk sertifikat - hanya untuk sertifikat yang ditujukan untuk jaringan internal, Symantec mengenakan biaya $ 399 per tahun . Biaya itu mudah untuk dibenarkan jika Anda memproses pembayaran kartu kredit atau bekerja untuk pusat laba perusahaan yang sangat menguntungkan. Ini lebih dari yang mampu dimiliki oleh proyek pribadi yang dibuat di internet, atau untuk nirlaba yang berjalan dengan anggaran minimal, atau jika seseorang bekerja di pusat biaya organisasi - pusat biaya selalu berusaha melakukan lebih banyak dengan kurang.
Alternatifnya adalah menggunakan certbot (lihat tentang certbot ). Certbot adalah klien otomatis yang mudah digunakan yang mengambil dan menyebarkan sertifikat SSL / TLS untuk server web Anda.
Jika Anda mengatur certbot, Anda dapat mengaktifkannya untuk membuat dan mengelola sertifikat untuk Anda yang dikeluarkan oleh otoritas sertifikat Let's Encrypt .
Saya melakukan ini selama akhir pekan untuk organisasi saya. Saya menginstal paket yang diperlukan untuk certbot di server saya (Ubuntu 16.04) dan kemudian menjalankan perintah yang diperlukan untuk mengatur dan mengaktifkan certbot. Satu kemungkinan membutuhkan plugin DNS untuk certbot - kami saat ini menggunakan DigitalOcean meskipun mungkin akan bermigrasi ke layanan lain segera.
Perhatikan bahwa beberapa petunjuknya kurang tepat dan perlu sedikit waktu untuk mencari tahu. Ini mengambil cukup banyak waktu saya pertama kali, tetapi sekarang saya pikir saya bisa melakukannya dalam beberapa menit.
Untuk DigitalOcean, satu area yang saya perjuangkan adalah ketika saya diminta untuk memasukkan jalur ke file INI kredensial DigitalOcean Anda. Yang dimaksud skrip adalah halaman Aplikasi & API dan tab Token / Kunci pada halaman itu. Anda perlu memiliki atau membuat token akses pribadi (baca dan tulis) untuk DigitalOcean's API - ini adalah string heksadesimal 65 karakter. String ini kemudian perlu dimasukkan ke dalam file di server web tempat Anda menjalankan certbot. File itu dapat memiliki komentar sebagai baris pertama (komentar dimulai dengan #). Garis kedua adalah:
Setelah saya menemukan cara mengatur token baca + tulis untuk API DigitalOcean, cukup mudah untuk menggunakan certbot untuk mengatur sertifikat wildcard . Perhatikan bahwa seseorang tidak harus mensetup sertifikat wildcard, seseorang dapat menentukan masing-masing domain dan sub-domain yang ingin disertifikasi oleh sertifikat tersebut. Itu adalah sertifikat wildcard yang memerlukan file INI kredensial yang berisi token akses pribadi dari DigitalOcean.
Perhatikan bahwa sertifikat kunci publik (juga dikenal sebagai sertifikat identitas atau sertifikat SSL) kedaluwarsa dan memerlukan pembaruan. Dengan demikian, Anda perlu memperbarui sertifikat Anda secara berkala (berulang). Dokumentasi certbot mencakup perpanjangan sertifikat .
Rencana saya adalah menulis sebuah skrip untuk menggunakan perintah openssl untuk mendapatkan tanggal kedaluwarsa sertifikat saya dan untuk memicu pembaruan ketika 30 hari atau kurang sampai berakhir. Saya kemudian akan menambahkan skrip ini ke cron dan menjalankannya sekali per hari.
Ini adalah perintah untuk membaca tanggal kedaluwarsa sertifikat Anda:
sumber