@@ -6,7 +6,7 @@ def gen_certs(num_certs, path)
66 ca_key = OpenSSL ::PKey ::RSA . new 2048
77
88 # CA Cert
9- ca_name = OpenSSL ::X509 ::Name . parse 'CN=ca/DC=example'
9+ ca_name = OpenSSL ::X509 ::Name . parse 'CN=ca/DC=example/DC=com '
1010 ca_cert = OpenSSL ::X509 ::Certificate . new
1111 ca_cert . serial = serial
1212 serial += 1
@@ -19,16 +19,16 @@ def gen_certs(num_certs, path)
1919 extension_factory = OpenSSL ::X509 ::ExtensionFactory . new
2020 extension_factory . subject_certificate = ca_cert
2121 extension_factory . issuer_certificate = ca_cert
22- ca_cert . add_extension extension_factory . create_extension (
23- 'subjectAltName' , [ 'localhost' , '127.0.0.1' ] . map { |d | "DNS: #{ d } " } . join ( ',' )
24- )
22+ # ca_cert.add_extension extension_factory.create_extension(
23+ # 'subjectAltName', ['localhost', '127.0.0.1'].map { |d| "DNS: #{d}" }.join(',')
24+ # )
2525 ca_cert . add_extension extension_factory . create_extension (
2626 'subjectKeyIdentifier' , 'hash'
2727 )
2828 ca_cert . add_extension extension_factory . create_extension (
2929 'basicConstraints' , 'CA:TRUE' , true
3030 )
31- ca_cert . sign ca_key , OpenSSL ::Digest ::SHA1 . new
31+ ca_cert . sign ca_key , OpenSSL ::Digest ::SHA256 . new
3232 ret [ :ca ] = {
3333 :cert => {
3434 :pem => ca_cert . to_pem ,
@@ -38,7 +38,7 @@ def gen_certs(num_certs, path)
3838
3939 num_certs . times do |i |
4040 key , cert , serial = gen_cert_pair serial , ca_cert
41- cert . sign ca_key , OpenSSL ::Digest ::SHA1 . new
41+ cert . sign ca_key , OpenSSL ::Digest ::SHA256 . new
4242 ret [ :clients ] << {
4343 :key => {
4444 :pem => key . to_pem ,
@@ -58,7 +58,11 @@ def gen_cert_pair(serial, ca_cert)
5858 serial += 1
5959 # Node Key
6060 key = OpenSSL ::PKey ::RSA . new 2048
61- node_name = OpenSSL ::X509 ::Name . parse 'CN=localhost/DC=example'
61+ node_name = OpenSSL ::X509 ::Name . parse 'CN=localhost/DC=example/DC=com'
62+
63+ # prepare SANS list
64+ sans = [ 'localhost.localdomain' , 'localhost' , 'localhost.example.com' ]
65+ sans_list = sans . map { |domain | "DNS:#{ domain } " }
6266
6367 # Node Cert
6468 cert = OpenSSL ::X509 ::Certificate . new
@@ -75,6 +79,10 @@ def gen_cert_pair(serial, ca_cert)
7579 csr_extension_factory . subject_certificate = cert
7680 csr_extension_factory . issuer_certificate = ca_cert
7781
82+ cert . add_extension csr_extension_factory . create_extension (
83+ 'subjectAltName' ,
84+ sans_list . join ( ',' )
85+ )
7886 cert . add_extension csr_extension_factory . create_extension (
7987 'basicConstraints' ,
8088 'CA:FALSE'
@@ -83,6 +91,10 @@ def gen_cert_pair(serial, ca_cert)
8391 'keyUsage' ,
8492 'keyEncipherment,dataEncipherment,digitalSignature'
8593 )
94+ cert . add_extension csr_extension_factory . create_extension (
95+ 'extendedKeyUsage' ,
96+ 'serverAuth,clientAuth'
97+ )
8698 cert . add_extension csr_extension_factory . create_extension (
8799 'subjectKeyIdentifier' , 'hash'
88100 )
0 commit comments