Код: Выделить всё
gmssl ecparam -genkey -name sm2p256v1 -out ca.key
gmssl req -new -key ca.key -out ca.csr
gmssl x509 -req -days 3650 -sm3 -signkey ca.key -in ca.csr -out ca.crt
gmssl ecparam -genkey -name sm2p256v1 -out server.key
gmssl req -new -key server.key -out server.csr
gmssl x509 -req -days 3650 -sm3 -CA ca.crt -CAkey ca.key -CAcreateserial -in server.csr -out server.crt
gmssl pkcs12 -export -in server.crt -inkey server.key -out server.p12 -name serverkey
но когда я пытаюсь импортировать сертификат и ключ сервера в файл jks, это не работает. Я также пытался изменить некоторые пароли на «changeit», но keytool показывает ту же ошибку:
Код: Выделить всё
keytool -importkeystore -deststorepass 123456 -destkeypass 123456 \
-destkeystore server.jks -srckeystore server.p12 -srcstoretype PKCS12 \
-srcstorepass 123456 -alias serverkey
keytool error: java.io.IOException: keystore password was incorrect
@dave_thompson_085 На самом деле я хочу создать https-сервер netty с использованием GMSSL, но я не знаком с этим и не нашел руководства о том, как создать сервер gmssl с использованием netty, поэтому я хочу сначала построить обычный SSL-сервер, а затем изменить его на GMSSL. В учебнике по созданию сервера SSL, который я нашел, используется файл jks, поэтому я попытался поместить в него ключ SM2 и сертификат, чтобы изменить его на GMSSL.
Я также нашел другие способы использования непосредственно файла сертификата и ключа, например создание SSLContext с помощью этого кода:
Код: Выделить всё
File certChainFile = new File("server.crt");
File keyFile = new File("server.key");
File rootFile = new File("ca.crt");
SslContext sslCtx = SslContextBuilder.forServer(certChainFile, keyFile)
.trustManager(rootFile).protocols("GMSSLv.1.0")
// will it recognize these string "GMSSLv.1.0"? I'dont konw, I just try.
.clientAuth(ClientAuth.NONE).build();
Код: Выделить всё
java.lang.IllegalArgumentException: File does not contain valid certificates
Код: Выделить всё
gmssl pkcs8 -topk8 -inform PEM -outform PEM -in server.p12 -out server.p8 -nocrypt
Код: Выделить всё
unable to load key
4577107392:error:25066067:DSO support routines:dlfcn_load:could not load the shared library:crypto/dso/dso_dlfcn.c:113:filename(libproviders.dylib): dlopen(libproviders.dylib, 2): image not found
4577107392:error:25070067:DSO support routines:DSO_load:could not load the shared library:crypto/dso/dso_lib.c:161:
4577107392:error:0E07506E:configuration file routines:module_load_dso:error loading dso:crypto/conf/conf_mod.c:220:module=providers, path=providers
4577107392:error:0E076071:configuration file routines:module_run:unknown module name:crypto/conf/conf_mod.c:162:module=providers
4577107392:error:0906D06C:PEM routines:PEM_read_bio:no start line:crypto/pem/pem_lib.c:695:
Поддерживает ли netty алгоритм gmssl и SM2 SM3 SM4? В этом выпуске я вижу, что он вроде бы их поддерживает, но похоже, что запрос на включение не подразумевает алгоритм шифрования.
Как мне построить сервер GMSSL? Должен ли я использовать специальную версию JCE, Netty или JDK? Или мне нужно самому подразумевать протокол?
Подробнее здесь: https://stackoverflow.com/questions/712 ... -incorrect
Мобильная версия