คุณจะลงนามในคำขอลงนามใบรับรองกับผู้ออกใบรับรองของคุณได้อย่างไร


197

ในระหว่างการค้นหาของฉันฉันพบหลายวิธีในการเซ็นชื่อคำขอลงนามใบรับรอง SSL:

  1. ใช้x509โมดูล:

    openssl x509 -req -days 360 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt
    
  2. ใช้caโมดูล:

    openssl ca -cert ca.crt -keyfile ca.key -in server.csr -out server.crt
    

หมายเหตุ: ฉันไม่แน่ใจเกี่ยวกับการใช้พารามิเตอร์ที่ถูกต้องสำหรับอันนี้ กรุณาแนะนำการใช้งานที่ถูกต้องถ้าฉันจะใช้มัน

เราควรใช้วิธีใดในการเซ็นรับรองคำขอกับผู้ออกใบรับรองของคุณ เป็นวิธีหนึ่งที่ดีกว่าวิธีอื่น (ตัวอย่างเช่นวิธีหนึ่งถูกเลิกใช้)



1
ฉันชอบสคริปต์เล็ก ๆ นี้ซึ่งตั้งค่า CA และอนุญาตให้คุณสร้างใบรับรอง "ผู้ใต้บังคับบัญชา" ที่ลงชื่อ หมายเหตุหากคุณต้องการให้ระบบของคุณมีความสุขกับ certs (เช่น S / MIME หรือ whatnot) คุณต้องเพิ่มใบรับรอง CA เป็น "root ที่เชื่อถือได้"
โถ

จากสิ่งที่ฉันเห็นcaมีไว้สำหรับกรณีที่คุณจริงจังกับการเป็น CA มากขึ้น
x-yuri

คุณอาจพบว่าคำตอบของฉันน่าสนใจ
x-yuri

Stack Overflow เป็นเว็บไซต์สำหรับคำถามเกี่ยวกับการเขียนโปรแกรมและการพัฒนา คำถามนี้ดูเหมือนจะไม่ได้อยู่ที่หัวข้อเพราะไม่เกี่ยวกับการเขียนโปรแกรมหรือการพัฒนา ดูหัวข้อใดบ้างที่ฉันสามารถถามเกี่ยวกับที่นี่ในศูนย์ช่วยเหลือ บางทีผู้ใช้ระดับสูงหรือUnix & Linux Stack Exchangeอาจเป็นที่ที่ดีกว่าสำหรับการถาม
jww

คำตอบ:


459
1. Using the x509 module
openssl x509 ...
...

2 Using the ca module
openssl ca ...
...

คุณกำลังนำคำสั่งเหล่านั้นหายไป

นี่เป็นกระบวนการสองขั้นตอน ก่อนอื่นให้คุณตั้งค่า CA ของคุณจากนั้นคุณลงชื่อใบรับรองเอนทิตีปลายทาง (aka เซิร์ฟเวอร์หรือผู้ใช้) ทั้งสองคำสั่งทั้งสองแยกสองขั้นตอนเป็นหนึ่งเดียว และทั้งคู่คิดว่าคุณมีไฟล์กำหนดค่า OpenSSL ที่ติดตั้งไว้แล้วสำหรับใบรับรอง CA และเซิร์ฟเวอร์ (เอนทิตีปลายทาง)


ขั้นแรกให้สร้างไฟล์กำหนดค่าพื้นฐาน:

$ touch openssl-ca.cnf

จากนั้นเพิ่มสิ่งต่อไปนี้:

HOME            = .
RANDFILE        = $ENV::HOME/.rnd

####################################################################
[ ca ]
default_ca    = CA_default      # The default ca section

[ CA_default ]

default_days     = 1000         # How long to certify for
default_crl_days = 30           # How long before next CRL
default_md       = sha256       # Use public key default MD
preserve         = no           # Keep passed DN ordering

x509_extensions = ca_extensions # The extensions to add to the cert

email_in_dn     = no            # Don't concat the email in the DN
copy_extensions = copy          # Required to copy SANs from CSR to cert

####################################################################
[ req ]
default_bits       = 4096
default_keyfile    = cakey.pem
distinguished_name = ca_distinguished_name
x509_extensions    = ca_extensions
string_mask        = utf8only

####################################################################
[ ca_distinguished_name ]
countryName         = Country Name (2 letter code)
countryName_default = US

stateOrProvinceName         = State or Province Name (full name)
stateOrProvinceName_default = Maryland

localityName                = Locality Name (eg, city)
localityName_default        = Baltimore

organizationName            = Organization Name (eg, company)
organizationName_default    = Test CA, Limited

organizationalUnitName         = Organizational Unit (eg, division)
organizationalUnitName_default = Server Research Department

commonName         = Common Name (e.g. server FQDN or YOUR name)
commonName_default = Test CA

emailAddress         = Email Address
emailAddress_default = test@example.com

####################################################################
[ ca_extensions ]

subjectKeyIdentifier   = hash
authorityKeyIdentifier = keyid:always, issuer
basicConstraints       = critical, CA:true
keyUsage               = keyCertSign, cRLSign

ฟิลด์ด้านบนนำมาจากความซับซ้อนมากขึ้นopenssl.cnf(คุณสามารถค้นหาได้/usr/lib/openssl.cnf ) แต่ฉันคิดว่ามันเป็นสิ่งจำเป็นสำหรับการสร้างใบรับรอง CA และรหัสส่วนตัว

ปรับแต่งฟิลด์ด้านบนเพื่อให้เหมาะกับรสนิยมของคุณ ค่าเริ่มต้นช่วยให้คุณประหยัดเวลาจากการป้อนข้อมูลเดียวกันในขณะที่ทดลองกับไฟล์กำหนดค่าและตัวเลือกคำสั่ง

ฉันละเว้นสิ่งที่เกี่ยวข้องกับ CRL แต่การดำเนินงาน CA ของคุณควรมี ดูopenssl.cnfและที่เกี่ยวข้องcrl_extส่วน

จากนั้นดำเนินการดังต่อไปนี้ -nodesละเว้นรหัสผ่านหรือวลีรหัสผ่านเพื่อให้คุณสามารถตรวจสอบใบรับรอง เป็นความคิดที่ดีจริงๆที่ จะไม่ใช้รหัสผ่านหรือวลีรหัสผ่าน

$ openssl req -x509 -config openssl-ca.cnf -newkey rsa:4096 -sha256 -nodes -out cacert.pem -outform PEM

หลังจากคำสั่งดำเนินการcacert.pemจะเป็นใบรับรองของคุณสำหรับการดำเนินงาน CA และcakey.pemจะเป็นคีย์ส่วนตัว เรียกคืนรหัสส่วนตัวไม่มีรหัสผ่านหรือวลีรหัสผ่าน

คุณสามารถถ่ายโอนใบรับรองด้วยสิ่งต่อไปนี้

$ openssl x509 -in cacert.pem -text -noout
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 11485830970703032316 (0x9f65de69ceef2ffc)
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=US, ST=MD, L=Baltimore, CN=Test CA/emailAddress=test@example.com
        Validity
            Not Before: Jan 24 14:24:11 2014 GMT
            Not After : Feb 23 14:24:11 2014 GMT
        Subject: C=US, ST=MD, L=Baltimore, CN=Test CA/emailAddress=test@example.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (4096 bit)
                Modulus:
                    00:b1:7f:29:be:78:02:b8:56:54:2d:2c:ec:ff:6d:
                    ...
                    39:f9:1e:52:cb:8e:bf:8b:9e:a6:93:e1:22:09:8b:
                    59:05:9f
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Subject Key Identifier:
                4A:9A:F3:10:9E:D7:CF:54:79:DE:46:75:7A:B0:D0:C1:0F:CF:C1:8A
            X509v3 Authority Key Identifier:
                keyid:4A:9A:F3:10:9E:D7:CF:54:79:DE:46:75:7A:B0:D0:C1:0F:CF:C1:8A

            X509v3 Basic Constraints: critical
                CA:TRUE
            X509v3 Key Usage:
                Certificate Sign, CRL Sign
    Signature Algorithm: sha256WithRSAEncryption
         4a:6f:1f:ac:fd:fb:1e:a4:6d:08:eb:f5:af:f6:1e:48:a5:c7:
         ...
         cd:c6:ac:30:f9:15:83:41:c1:d1:20:fa:85:e7:4f:35:8f:b5:
         38:ff:fd:55:68:2c:3e:37

และทดสอบวัตถุประสงค์ด้วยสิ่งต่อไปนี้ (ไม่ต้องกังวลกับAny Purpose: Yesดู"สำคัญ CA: FALSE" แต่ "วัตถุประสงค์ใด ๆ CA: ใช่" )

$ openssl x509 -purpose -in cacert.pem -inform PEM
Certificate purposes:
SSL client : No
SSL client CA : Yes
SSL server : No
SSL server CA : Yes
Netscape SSL server : No
Netscape SSL server CA : Yes
S/MIME signing : No
S/MIME signing CA : Yes
S/MIME encryption : No
S/MIME encryption CA : Yes
CRL signing : Yes
CRL signing CA : Yes
Any Purpose : Yes
Any Purpose CA : Yes
OCSP helper : Yes
OCSP helper CA : Yes
Time Stamp signing : No
Time Stamp signing CA : Yes
-----BEGIN CERTIFICATE-----
MIIFpTCCA42gAwIBAgIJAJ9l3mnO7y/8MA0GCSqGSIb3DQEBCwUAMGExCzAJBgNV
...
aQUtFrV4hpmJUaQZ7ySr/RjCb4KYkQpTkOtKJOU1Ic3GrDD5FYNBwdEg+oXnTzWP
tTj//VVoLD43
-----END CERTIFICATE-----

สำหรับตอนที่สองฉันจะสร้างไฟล์กำหนดค่าอื่นที่ย่อยได้ง่าย ครั้งแรก(คุณสามารถทำให้คนเหล่านี้สำหรับใบรับรองผู้ใช้ยัง)touchopenssl-server.cnf

$ touch openssl-server.cnf

จากนั้นเปิดและเพิ่มสิ่งต่อไปนี้

HOME            = .
RANDFILE        = $ENV::HOME/.rnd

####################################################################
[ req ]
default_bits       = 2048
default_keyfile    = serverkey.pem
distinguished_name = server_distinguished_name
req_extensions     = server_req_extensions
string_mask        = utf8only

####################################################################
[ server_distinguished_name ]
countryName         = Country Name (2 letter code)
countryName_default = US

stateOrProvinceName         = State or Province Name (full name)
stateOrProvinceName_default = MD

localityName         = Locality Name (eg, city)
localityName_default = Baltimore

organizationName            = Organization Name (eg, company)
organizationName_default    = Test Server, Limited

commonName           = Common Name (e.g. server FQDN or YOUR name)
commonName_default   = Test Server

emailAddress         = Email Address
emailAddress_default = test@example.com

####################################################################
[ server_req_extensions ]

subjectKeyIdentifier = hash
basicConstraints     = CA:FALSE
keyUsage             = digitalSignature, keyEncipherment
subjectAltName       = @alternate_names
nsComment            = "OpenSSL Generated Certificate"

####################################################################
[ alternate_names ]

DNS.1  = example.com
DNS.2  = www.example.com
DNS.3  = mail.example.com
DNS.4  = ftp.example.com

หากคุณกำลังพัฒนาและจำเป็นต้องใช้เวิร์กสเตชันของคุณเป็นเซิร์ฟเวอร์คุณอาจต้องทำสิ่งต่อไปนี้สำหรับ Chrome มิฉะนั้นChrome อาจบ่นชื่อสามัญไม่ถูกต้อง (ERR_CERT_COMMON_NAME_INVALID ) ฉันไม่แน่ใจว่าความสัมพันธ์ระหว่างที่อยู่ IP ใน SAN และ CN ในกรณีนี้คืออะไร

# IPv4 localhost
IP.1     = 127.0.0.1

# IPv6 localhost
IP.2     = ::1

จากนั้นสร้างคำขอใบรับรองเซิร์ฟเวอร์ อย่าลืมเว้นไว้ -x509 * การเพิ่ม-x509จะสร้างใบรับรองและไม่ใช่การร้องขอ

$ openssl req -config openssl-server.cnf -newkey rsa:2048 -sha256 -nodes -out servercert.csr -outform PEM

หลังจากรันคำสั่งนี้คุณจะมีคำขอในและที่สำคัญภาคเอกชนในservercert.csrserverkey.pem

และคุณสามารถตรวจสอบได้อีกครั้ง

$ openssl req -text -noout -verify -in servercert.csr
Certificate:
    verify OK
    Certificate Request:
        Version: 0 (0x0)
        Subject: C=US, ST=MD, L=Baltimore, CN=Test Server/emailAddress=test@example.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:ce:3d:58:7f:a0:59:92:aa:7c:a0:82:dc:c9:6d:
                    ...
                    f9:5e:0c:ba:84:eb:27:0d:d9:e7:22:5d:fe:e5:51:
                    86:e1
                Exponent: 65537 (0x10001)
        Attributes:
        Requested Extensions:
            X509v3 Subject Key Identifier:
                1F:09:EF:79:9A:73:36:C1:80:52:60:2D:03:53:C7:B6:BD:63:3B:61
            X509v3 Basic Constraints:
                CA:FALSE
            X509v3 Key Usage:
                Digital Signature, Key Encipherment
            X509v3 Subject Alternative Name:
                DNS:example.com, DNS:www.example.com, DNS:mail.example.com, DNS:ftp.example.com
            Netscape Comment:
                OpenSSL Generated Certificate
    Signature Algorithm: sha256WithRSAEncryption
         6d:e8:d3:85:b3:88:d4:1a:80:9e:67:0d:37:46:db:4d:9a:81:
         ...
         76:6a:22:0a:41:45:1f:e2:d6:e4:8f:a1:ca:de:e5:69:98:88:
         a9:63:d0:a7

ถัดไปคุณต้องลงชื่อด้วย CA ของคุณ


คุณเกือบจะพร้อมที่จะลงนามรับรองเซิร์ฟเวอร์โดย CA ของคุณ CA openssl-ca.cnfต้องการสองส่วนเพิ่มเติมก่อนที่จะออกคำสั่ง

ก่อนอื่นให้เปิดopenssl-ca.cnfและเพิ่มสองส่วนต่อไปนี้

####################################################################
[ signing_policy ]
countryName            = optional
stateOrProvinceName    = optional
localityName           = optional
organizationName       = optional
organizationalUnitName = optional
commonName             = supplied
emailAddress           = optional

####################################################################
[ signing_req ]
subjectKeyIdentifier   = hash
authorityKeyIdentifier = keyid,issuer
basicConstraints       = CA:FALSE
keyUsage               = digitalSignature, keyEncipherment

ประการที่สองเพิ่มต่อไปนี้ในส่วนของ[ CA_default ] openssl-ca.cnfฉันออกไปก่อนหน้านี้เพราะพวกเขาสามารถทำให้สิ่งต่าง ๆ ซับซ้อน (พวกเขาไม่ได้ใช้ในเวลา) ตอนนี้คุณจะเห็นวิธีการใช้งานดังนั้นหวังว่าพวกเขาจะเข้าใจ

base_dir      = .
certificate   = $base_dir/cacert.pem   # The CA certifcate
private_key   = $base_dir/cakey.pem    # The CA private key
new_certs_dir = $base_dir              # Location for new certs after signing
database      = $base_dir/index.txt    # Database index file
serial        = $base_dir/serial.txt   # The current serial number

unique_subject = no  # Set to 'no' to allow creation of
                     # several certificates with same subject.

ประการที่สามการสัมผัสindex.txtและserial.txt:

$ touch index.txt
$ echo '01' > serial.txt

จากนั้นดำเนินการต่อไปนี้:

$ openssl ca -config openssl-ca.cnf -policy signing_policy -extensions signing_req -out servercert.pem -infiles servercert.csr

คุณควรเห็นคล้ายกับสิ่งต่อไปนี้:

Using configuration from openssl-ca.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'US'
stateOrProvinceName   :ASN.1 12:'MD'
localityName          :ASN.1 12:'Baltimore'
commonName            :ASN.1 12:'Test CA'
emailAddress          :IA5STRING:'test@example.com'
Certificate is to be certified until Oct 20 16:12:39 2016 GMT (1000 days)
Sign the certificate? [y/n]:Y

1 out of 1 certificate requests certified, commit? [y/n]Y
Write out database with 1 new entries
Data Base Updated

servercert.pemหลังจากรันคำสั่งคุณจะมีใบรับรองของเซิร์ฟเวอร์มิ้นต์สดใหม่ใน serverkey.pemคีย์ส่วนตัวที่ถูกสร้างขึ้นก่อนหน้านี้และสามารถใช้ได้ใน

สุดท้ายคุณสามารถตรวจสอบใบรับรองที่ทำเสร็จใหม่ด้วยสิ่งต่อไปนี้:

$ openssl x509 -in servercert.pem -text -noout
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 9 (0x9)
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=US, ST=MD, L=Baltimore, CN=Test CA/emailAddress=test@example.com
        Validity
            Not Before: Jan 24 19:07:36 2014 GMT
            Not After : Oct 20 19:07:36 2016 GMT
        Subject: C=US, ST=MD, L=Baltimore, CN=Test Server
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:ce:3d:58:7f:a0:59:92:aa:7c:a0:82:dc:c9:6d:
                    ...
                    f9:5e:0c:ba:84:eb:27:0d:d9:e7:22:5d:fe:e5:51:
                    86:e1
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Subject Key Identifier:
                1F:09:EF:79:9A:73:36:C1:80:52:60:2D:03:53:C7:B6:BD:63:3B:61
            X509v3 Authority Key Identifier:
                keyid:42:15:F2:CA:9C:B1:BB:F5:4C:2C:66:27:DA:6D:2E:5F:BA:0F:C5:9E

            X509v3 Basic Constraints:
                CA:FALSE
            X509v3 Key Usage:
                Digital Signature, Key Encipherment
            X509v3 Subject Alternative Name:
                DNS:example.com, DNS:www.example.com, DNS:mail.example.com, DNS:ftp.example.com
            Netscape Comment:
                OpenSSL Generated Certificate
    Signature Algorithm: sha256WithRSAEncryption
         b1:40:f6:34:f4:38:c8:57:d4:b6:08:f7:e2:71:12:6b:0e:4a:
         ...
         45:71:06:a9:86:b6:0f:6d:8d:e1:c5:97:8d:fd:59:43:e9:3c:
         56:a5:eb:c8:7e:9f:6b:7a

ก่อนหน้านี้คุณเพิ่มต่อไปนี้เพื่อ:CA_default copy_extensions = copyสำเนานี้เป็นส่วนขยายที่จัดทำโดยบุคคลที่ทำการร้องขอ

ถ้าคุณไม่ใช้copy_extensions = copyแล้วใบรับรองเซิร์ฟเวอร์ของคุณจะขาดเรื่องสลับชื่อ (SANs) เหมือนและwww.example.commail.example.com

หากคุณใช้copy_extensions = copyแต่อย่ามองข้ามคำขอผู้ร้องขออาจหลอกให้คุณลงชื่อบางอย่างเช่นรูทรอง (แทนที่จะเป็นเซิร์ฟเวอร์หรือใบรับรองผู้ใช้) ซึ่งหมายความว่าเขา / เธอจะสามารถทำใบประกาศนียบัตรที่โยงกลับไปยังรูทที่เชื่อถือได้ของคุณ ให้แน่ใจว่าได้ตรวจสอบคำขอด้วยopenssl req -verifyก่อนเซ็น


หากคุณละเว้น unique_subjectหรือตั้งค่าเป็นyesคุณจะได้รับอนุญาตให้สร้างใบรับรองเพียงใบเดียวภายใต้ชื่อจำเพาะของชื่อเรื่อง

unique_subject = yes            # Set to 'no' to allow creation of
                                # several ctificates with same subject.

กำลังพยายามสร้างใบรับรองที่สองในขณะที่การทดสอบจะส่งผลต่อไปนี้เมื่อลงชื่อใบรับรองเซิร์ฟเวอร์ของคุณด้วยรหัสส่วนตัวของ CA:

Sign the certificate? [y/n]:Y
failed to update database
TXT_DB error number 2

ดังนั้นจึงunique_subject = noเหมาะสำหรับการทดสอบ


หากคุณต้องการให้แน่ใจว่าชื่อองค์กรสอดคล้องกันระหว่าง CA ที่ลงนามด้วยตนเอง, Subordinate CAและใบรับรองEnd-Entityจากนั้นเพิ่มสิ่งต่อไปนี้ในไฟล์กำหนดค่า CA ของคุณ:

[ policy_match ]
organizationName = match

หากคุณต้องการอนุญาตให้ชื่อองค์กรเปลี่ยนแปลงให้ใช้:

[ policy_match ]
organizationName = supplied

มีกฎอื่น ๆ ที่เกี่ยวข้องกับการจัดการชื่อ DNS ในใบรับรอง X.509 / PKIX อ้างถึงเอกสารเหล่านี้สำหรับกฎ:

RFC 6797 และ RFC 7469 อยู่ในรายการเนื่องจากมีข้อ จำกัด มากกว่าเอกสาร RFC และ CA / B อื่น ๆ 6797 และ 7469 ของ RFC ไม่อนุญาตให้ใช้ที่อยู่ IP เช่นกัน


4
ขอบคุณสำหรับคำตอบที่กว้างขวาง ... อย่างไรก็ตามฉันหลงทางอยู่ที่นี่ สิ่งที่ฉันเข้าใจจากสิ่งที่คุณเขียน: openssl reqใช้เพื่อสร้าง CSR openssl req -x509ใช้เพื่อสร้างใบรับรอง CA (ฉันเห็นที่อื่นที่คุณสามารถสร้างใบรับรองที่ลงนามเองได้) openssl caใช้เพื่อลงชื่อ CSR ด้วยใบรับรอง CA ขวา? สิ่งที่ทำให้ฉันสับสนก็คือส่วนเดียวกันของไฟล์ openssl.cnf นั้นใช้กับค่าที่ต่างกันขึ้นอยู่กับคำสั่ง ... ฉันคิดว่าตอนนี้ฉันหลงทางไปหมดแล้ว
เบอร์นาร์ดรอสเซ็ต

27
ก่อนอื่นopenssl req -x509จะใช้ในการสร้าง CA ประการที่สองopenssl reqใช้ในการสร้าง CSR ของเซิร์ฟเวอร์ ประการที่สามopenssl caใช้เพื่อสร้างใบรับรองเซิร์ฟเวอร์และรับรองด้วยลายเซ็นของ CA
jww

1
"สิ่งที่ทำให้ฉันสับสนก็คือส่วนเดียวกันของ openssl.cnf ... " - ใช่ นั่นเป็นเหตุผลที่ฉันยากจนพวกเขาออกมาให้คุณเข้ามาและopenssl-ca.cnf openssl-server.cnfหลังจากที่คุณคุ้นเคยกับพวกเขาและวิธีการเรียกใช้ส่วนต่างๆคุณสามารถรวมพวกเขาเข้ากับสิ่งที่น่ารังเกียจได้เช่นopenssl.cnfกัน
jww

1
@JeffPuckettII - เป็นส่วนทั่วไป มันถูกใช้โดยทั้งยูทิลิตี้ CA และยูทิลิตี้ Req ควรเป็นนามสกุล v3
jww

5
@ahnkle ใช้ตัวเลือกวันสำหรับสิ่งที่แตกต่างจากค่าเริ่มต้น 30 วัน OpenSSL docs
george

14

นอกจากคำตอบของ @jww ฉันอยากจะบอกว่าการกำหนดค่าใน openssl-ca.cnf

default_days     = 1000         # How long to certify for

กำหนดจำนวนเริ่มต้นของวันที่ใบรับรองที่ลงนามโดย root-ca นี้จะถูกต้อง ในการตั้งค่าความถูกต้องของ root-ca คุณควรใช้ตัวเลือก '-days n' ใน:

openssl req -x509 -days 3000 -config openssl-ca.cnf -newkey rsa:4096 -sha256 -nodes -out cacert.pem -outform PEM

หากไม่สามารถทำเช่นนั้นรูท ca ของคุณจะใช้ได้เพียงหนึ่งเดือนเริ่มต้นและใบรับรองใด ๆ ที่ลงนามโดยรูท CA นี้ก็จะมีอายุหนึ่งเดือนด้วย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.