工作最近偶爾很忙偶爾很閒,然後很閒的時候想到可以更新一下blogger,但是每次想想又放棄。
每次寫文章都會非常龜毛這邊要怎樣那邊要怎樣(處女座癌),一篇文都要花很多心力寫,超級累的。
所以改變一下經營方式,以後可能還是會以筆記為主,偶爾可以還是可以寫一下教學,不然就是亂寫。
+ 192.168.1.100
+----- grism.packetx.biz + 192.168.1.150
packetx.biz + + 192.168.1.120
+----- ssl.packetx.biz
root_ca.key。~ openssl genrsa -out root_ca.key 4096 Generating RSA private key, 4096 bit long modulus ......... .................................................. e is 65537 (0x10001)
~ cat <<EOF > v3.ext subjectKeyIdentifier = hash authorityKeyIdentifier = keyid:always,issuer basicConstraints = critical, CA:true, pathlen:0 keyUsage = critical, digitalSignature, cRLSign, keyCertSign subjectAltName = @alt_names [alt_names] DNS.1 = packetx.biz EOF
DNS.2、DNS.3...。basic constraints的CA:true和key usage的key cert sign,表示這個憑證可以再往下簽(總不可能讓它無限簽吧)。~ cp /System/Library/OpenSSL/openssl.cnf . ~ cat v3.ext >> ./openssl.cnf ~ rm -f v3.ext
openssl.cnf位置在/System/Library/OpenSSL/openssl.cnf,其他系統就自己查吧。~ openssl req -new -x509 \
-days 3650 -sha256 \
-config ./openssl.cnf \
-key root_ca.key -out root_ca.crt \
-subj "/C=TW/ST=New Taipei City/L=Zhonghe Dist./O=PacketX Technology Ltd./OU=R&D/CN=packetx.biz"
-days:憑證期限,根憑證時間長一點沒關係,不然到時候整組重簽會非常麻煩。-config:就是剛剛的組態檔。-key:剛剛的私鑰。-out:要產生的憑證(公鑰)。-subj:憑證主題,C是是國家,ST是州或省,L是地點或城市,O是組織名稱,OU是部門,CN就是common name。der格式,把憑證(公鑰)轉成der格式。~ openssl x509 -in root_ca.crt -outform DER -out root_ca.der
.der加入受信任的根憑證,這憑證之後簽的所有憑證都會合法。pem格式)。
~ cat root_ca.crt root_ca.key > root_ca.pem
~ openssl x509 -in root_ca.pem -text -noout
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
dd:10:1d:57:89:03:e7:9d
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=TW, ST=New Taipei City, L=Zhonghe Dist., O=PacketX Technology Ltd., OU=R&D, CN=packetx.biz
Validity
Not Before: May 29 08:46:10 2017 GMT
Not After : May 27 08:46:10 2027 GMT
Subject: C=TW, ST=New Taipei City, L=Zhonghe Dist., O=PacketX Technology Ltd., OU=R&D, CN=packetx.biz
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (4096 bit)
Modulus (4096 bit):
00:db:05:71:21:00:72:86:c9:46:91:ba:7c:02:f5:
2a:b5:01:d8:59:9f:7d:21:5b:4e:aa:09:08:97:ef:
...略
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Key Identifier:
C3:25:C1:9F:58:75:6E:18:44:13:A0:2A:70:54:4D:76:5B:6A:6E:D3
X509v3 Authority Key Identifier:
keyid:C3:25:C1:9F:58:75:6E:18:44:13:A0:2A:70:54:4D:76:5B:6A:6E:D3
X509v3 Basic Constraints: critical
CA:TRUE, pathlen:0
X509v3 Key Usage: critical
Digital Signature, Certificate Sign, CRL Sign
X509v3 Subject Alternative Name:
DNS:packetx.biz
Signature Algorithm: sha256WithRSAEncryption
95:83:7b:00:b3:c6:c1:f0:e2:b9:26:63:5e:e6:5b:49:d2:8b:
f6:1e:ff:76:a9:88:fc:e8:53:bd:96:ee:b9:6a:a7:07:02:b7:
...略
X509v3 Subject Alternative Name有一個DNS了,這個就是SAN。~ openssl genrsa -out sub_root_ca.key 4096 Generating RSA private key, 4096 bit long modulus ...................................................................................................................................++ ........................................++ e is 65537 (0x10001)
~ openssl req -new \
-key sub_root_ca.key -out sub_root_ca.csr \
-subj "/C=TW/ST=New Taipei City/L=Zhonghe Dist./O=PacketX Technology Ltd./OU=R&D/CN=grism.packetx.biz"
~ cat <<EOF > v3.ext subjectKeyIdentifier = hash authorityKeyIdentifier = keyid:always,issuer basicConstraints = critical, CA:true, pathlen:0 keyUsage = critical, digitalSignature, cRLSign, keyCertSign subjectAltName = @alt_names [alt_names] DNS.1 = grism.packetx.biz EOF
~ openssl x509 -req \
-days 3650 -sha256 \
-extfile v3.ext -CAcreateserial \
-CA root_ca.crt -CAkey root_ca.key \
-in sub_root_ca.csr -out sub_root_ca.crt
~ rm -f v3.ext
~ rm -f sub_root_ca.csr
-extfile:剛剛產生的組態檔。-CAcreateserial:憑證中的序號,序號不能重複;使用這個參數會先產生sub_root_ca.srl之後會利用這個檔案遞增上去。-CA:憑證(上面的)公鑰。-CAkey:憑證(上面的)私鑰。-in:剛剛的簽名請求。-out:該中繼憑證的公鑰。~ openssl x509 -in sub_root_ca.crt -outform DER -out sub_root_ca.der
~ cat sub_root_ca.crt sub_root_ca.key > sub_root_ca.pem
~ openssl x509 -in sub_root_ca.pem -text -noout
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
c4:94:9c:a5:f9:75:34:52
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=TW, ST=New Taipei City, L=Zhonghe Dist., O=PacketX Technology Ltd., OU=R&D, CN=packetx.biz
Validity
Not Before: May 29 09:32:18 2017 GMT
Not After : May 27 09:32:18 2027 GMT
Subject: C=TW, ST=New Taipei City, L=Zhonghe Dist., O=PacketX Technology Ltd., OU=R&D, CN=grism.packetx.biz
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (4096 bit)
Modulus (4096 bit):
00:bd:06:e9:b2:27:31:8e:23:c7:74:3d:55:d7:89:
06:94:0b:31:ca:21:5e:25:4e:4b:65:a6:64:3f:c6:
...略
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Key Identifier:
B2:E8:3A:64:59:33:3E:01:09:41:A1:F8:AD:06:90:62:CD:EE:0E:00
X509v3 Authority Key Identifier:
keyid:C3:25:C1:9F:58:75:6E:18:44:13:A0:2A:70:54:4D:76:5B:6A:6E:D3
X509v3 Basic Constraints: critical
CA:TRUE, pathlen:0
X509v3 Key Usage: critical
Digital Signature, Certificate Sign, CRL Sign
X509v3 Subject Alternative Name:
DNS:grism.packetx.biz
Signature Algorithm: sha256WithRSAEncryption
27:f1:5b:b3:02:70:12:5d:a0:8f:af:7a:d6:e4:ef:ca:9a:b8:
ef:25:66:51:68:59:35:9b:4c:77:97:c2:2d:e4:34:37:98:94:
...略
Issuer是簽發人,Subject是這個憑證的一些基本資訊,一樣X509v3 Subject Alternative Name有DNS。~ openssl genrsa -out server.key 2048 Generating RSA private key, 2048 bit long modulus ...+++ ..........+++ e is 65537 (0x10001)
~ openssl req -new \
-key server.key -out server.csr \
-subj "/C=TW/ST=New Taipei City/L=Zhonghe Dist./O=PacketX Technology Ltd./OU=R&D/CN=192.168.1.100"
~ cat <<EOF > v3.ext
basicConstraints = CA:FALSE
nsCertType = client, email
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer
keyUsage = critical, nonRepudiation, digitalSignature, keyEncipherment
extendedKeyUsage = clientAuth, emailProtection
subjectAltName = @alt_names
[alt_names]
DNS.1 = 192.168.1.100
EOF
~ openssl x509 -req \
-days 365 -sha256 \
-extfile v3.ext -CAcreateserial \
-CA sub_root_ca.crt -CAkey sub_root_ca.key \
-in server.csr -out server.crt
~ rm -f v3.ext
~ rm -f server.csr
basic constraints的CA:false,表示不能再往下簽了。-CA和-CAkey是上面一層的中繼憑證公私鑰。-days最後發的憑證不用太久,通常一年就差不多了。~ cat server.crt server.key > server.pem
~ openssl x509 -in server.pem -text -noout
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
a7:42:3f:9b:28:91:45:13
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=TW, ST=New Taipei City, L=Zhonghe Dist., O=PacketX Technology Ltd., OU=R&D, CN=grism.packetx.biz
Validity
Not Before: May 29 10:16:14 2017 GMT
Not After : May 29 10:16:14 2018 GMT
Subject: C=TW, ST=New Taipei City, L=Zhonghe Dist., O=PacketX Technology Ltd., OU=R&D, CN=192.168.1.100
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (2048 bit)
Modulus (2048 bit):
00:9d:0d:59:64:a4:1d:09:98:dc:c4:cc:9f:30:ad:
77:b2:a5:1f:e6:8b:dd:1b:bb:5d:40:23:97:65:b2:
...略
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Cert Type:
SSL Client, S/MIME
X509v3 Subject Key Identifier:
EA:C8:69:FA:95:E4:65:12:97:FE:13:E4:F0:DD:33:0B:9E:90:ED:E4
X509v3 Authority Key Identifier:
keyid:B2:E8:3A:64:59:33:3E:01:09:41:A1:F8:AD:06:90:62:CD:EE:0E:00
X509v3 Key Usage: critical
Digital Signature, Non Repudiation, Key Encipherment
X509v3 Extended Key Usage:
TLS Web Client Authentication, E-mail Protection
X509v3 Subject Alternative Name:
DNS:192.168.1.100
Signature Algorithm: sha256WithRSAEncryption
25:a4:90:00:e9:b0:06:18:79:b2:ca:ff:4b:e3:66:fb:4e:81:
cc:df:16:aa:8c:e5:0e:4c:b8:c4:ec:55:f7:86:f4:a0:46:1b:
...略
Issuer變成中繼憑證了。~ cat root_ca.crt sub_root_ca.crt > tmp ~ openssl verify -CAfile tmp server.crt server.crt: OK ~ rm -f tmp或
~ openssl verify -CAfile <(cat root_ca.crt sub_root_ca.crt) server.crt server.crt: OK