У меня проблема с CA-сертификатом, сгенерированным с помощью openssl, который RouterOS (начиная с версии 6.28 и позже) не распознаёт как CA. Для создания CA была использована следующая команда:
openssl req -new -newkey rsa:2048 -config openssl_mikrotik-capsman_v1.cnf -keyout ca.key -out ca.crt -nodes -x509 -days 3650
Я также пытался сгенерировать CA прямо на RouterOS, и он корректно распознаётся как CA-сертификат. Но если я экспортирую этот сертификат и импортирую его обратно, он уже не распознаётся как CA.
На версиях RouterOS 6.27 и ниже всё работает нормально. Может кто-то знает, в чём проблема с моей настройкой или это баг в RouterOS?
Вот файл openssl_mikrotik-capsman_v1.cnf (без комментариев):
RANDFILE = ./.rnd
[ ca ]
default_ca = CA_default
[ CA_default ]
dir = .
certs = $dir
crl_dir = $dir
database = $dir/index.txt
new_certs_dir = $dir
certificate = $dir/ca.crt
serial = $dir/serial
crl = $dir/crl.pem
private_key = $dir/ca.key
RANDFILE = $dir/.rand
x509_extensions = basic_exts
crl_extensions = crl_ext
default_days = 3650
default_crl_days = 30
default_md = sha256
policy = policy_anything
[ policy_anything ]
countryName = optional
stateOrProvinceName = optional
localityName = optional
organizationName = optional
organizationalUnitName = optional
commonName = supplied
name = optional
emailAddress = optional
[ req ]
default_bits = 2048
default_keyfile = privkey.pem
default_md = sha256
distinguished_name = req_distinguished_name
x509_extensions = v3_ca
[ req_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = HR
countryName_min = 2
countryName_max = 2
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = PGZ
localityName = Locality Name (eg, city)
localityName_default = Kastav
0.organizationName = Organization Name (eg, company)
0.organizationName_default = MyCompany d.o.o.
organizationalUnitName = Organizational Unit Name (eg, section)
organizationalUnitName_default = CAPsMAN Test
commonName = Common Name (eg, YOUR name)
commonName_max = 64
emailAddress = Email Address
emailAddress_max = 40
emailAddress_default = pki@mycompany.lan
[ basic_exts ]
basicConstraints = CA:FALSE
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer:always
[ v3_ca ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer:always
basicConstraints = CA:true
keyUsage = cRLSign, keyCertSign
[ crl_ext ]
authorityKeyIdentifier = keyid:always,issuer:always
openssl req -new -newkey rsa:2048 -config openssl_mikrotik-capsman_v1.cnf -keyout ca.key -out ca.crt -nodes -x509 -days 3650
Я также пытался сгенерировать CA прямо на RouterOS, и он корректно распознаётся как CA-сертификат. Но если я экспортирую этот сертификат и импортирую его обратно, он уже не распознаётся как CA.
На версиях RouterOS 6.27 и ниже всё работает нормально. Может кто-то знает, в чём проблема с моей настройкой или это баг в RouterOS?
Вот файл openssl_mikrotik-capsman_v1.cnf (без комментариев):
RANDFILE = ./.rnd
[ ca ]
default_ca = CA_default
[ CA_default ]
dir = .
certs = $dir
crl_dir = $dir
database = $dir/index.txt
new_certs_dir = $dir
certificate = $dir/ca.crt
serial = $dir/serial
crl = $dir/crl.pem
private_key = $dir/ca.key
RANDFILE = $dir/.rand
x509_extensions = basic_exts
crl_extensions = crl_ext
default_days = 3650
default_crl_days = 30
default_md = sha256
policy = policy_anything
[ policy_anything ]
countryName = optional
stateOrProvinceName = optional
localityName = optional
organizationName = optional
organizationalUnitName = optional
commonName = supplied
name = optional
emailAddress = optional
[ req ]
default_bits = 2048
default_keyfile = privkey.pem
default_md = sha256
distinguished_name = req_distinguished_name
x509_extensions = v3_ca
[ req_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = HR
countryName_min = 2
countryName_max = 2
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = PGZ
localityName = Locality Name (eg, city)
localityName_default = Kastav
0.organizationName = Organization Name (eg, company)
0.organizationName_default = MyCompany d.o.o.
organizationalUnitName = Organizational Unit Name (eg, section)
organizationalUnitName_default = CAPsMAN Test
commonName = Common Name (eg, YOUR name)
commonName_max = 64
emailAddress = Email Address
emailAddress_max = 40
emailAddress_default = pki@mycompany.lan
[ basic_exts ]
basicConstraints = CA:FALSE
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer:always
[ v3_ca ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer:always
basicConstraints = CA:true
keyUsage = cRLSign, keyCertSign
[ crl_ext ]
authorityKeyIdentifier = keyid:always,issuer:always
