Код: Выделить всё
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:
большое спасибо за ответ на мой вопрос.
на самом деле я хочу создать сервер netty https с использованием 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? Я вижу эту проблему, которую он, кажется, поддерживает (https://github.com/netty/netty/issues/11406), но он увидел, что запрос на включение не подразумевает алгоритм шифрования.
как мне сделать, чтобы создать сервер GMSSL? следует ли мне использовать специальную версию JCE, Netty или JDK? или мне нужно самому указать протокол?
Подробнее здесь: https://stackoverflow.com/questions/712 ... -incorrect
Мобильная версия