Зашел на сайт, создал запрос на сертификат, указав, что имя контейнера задается порльзователем и ключи пометил как экспортируемые.
Сгенерил пару, установил её в контейнер, а сертификат в хранилище сертификатов. Всё ок.
Контейнер в регистри называется 'rc1111111'
1) Смотрим, что у нас в регистри:
C:\Program Files\Crypto Pro\CSP>csptest -keyset -check -cont "\\.\REGISTRY\rc1111111"
CSP (Type:75) v3.6.5359 KC1 Release Ver:3.6.6497 OS:Windows CPU:AMD64 FastCode:NoHardwareSupport.
AcquireContext: OK. HCRYPTPROV: 2823504
GetProvParam(PP_NAME): Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider
Container name: "rc1111111"
Signature key is not available.
Exchange key is available. HCRYPTKEY: 0x2ab9a0
Check key passed.
Certificate in container matches AT_KEYEXCHANGE key.
Keys in container:
exchange key
Total: SYS: 0,094 sec USR: 0,109 sec UTC: 47,437 sec
[ErrorCode: 0x00000000]
Видим, что там - контейнер, созданный при генерации пары на сайте.
2) смотрим, что на карте:
C:\Program Files\Crypto Pro\CSP>csptest -keyset -provtype 75 -enum_containers -unique -cont "\\.\OMNIKEY CardMan 3x21 0"
CSP (Type:75) v3.6.5359 KC1 Release Ver:3.6.6497 OS:Windows CPU:AMD64 FastCode:NoHardwareSupport.
AcquireContext: OK. HCRYPTPROV: 3020528
ctc111_al |SCARD\MSkey_741ABCB2\C\8795
OK.
Total: SYS: 0,078 sec USR: 0,063 sec UTC: 2,078 sec
[ErrorCode: 0x00000000]
Там один какой-то контейнер.
3) Генерить еще одну пару не будем. Сразу копируем контейнер из регистри на карту:
C:\Program Files\Crypto Pro\CSP>csptest -keycopy -provider "Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider" -provdest "Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider" -src "\\.\REGISTRY\rc1111111" -dest "\\.\OMNIKEY CardMan 3x21 0\TestCardCont999"
CSP (Type:75) v3.6.5359 KC1 Release Ver:3.6.6497 OS:Windows CPU:AMD64 FastCode:NoHardwareSupport.
CryptAcquireContext succeeded.HCRYPTPROV: 3218064
CryptAcquireContext succeeded.HCRYPTPROV: 3250080
Total: SYS: 0,172 sec USR: 0,078 sec UTC: 10,062 sec
[ErrorCode: 0x00000000]
4) Смотрим, что получилось:
C:\Program Files\Crypto Pro\CSP>csptest -keyset -provtype 75 -enum_containers -unique -cont "\\.\OMNIKEY CardMan 3x21 0"
CSP (Type:75) v3.6.5359 KC1 Release Ver:3.6.6497 OS:Windows CPU:AMD64 FastCode:NoHardwareSupport.
AcquireContext: OK. HCRYPTPROV: 2758384
TestCardCont999 |SCARD\MSkey_741ABCB2\A\6969
ctc111_al |SCARD\MSkey_741ABCB2\C\8795
OK.
Total: SYS: 0,078 sec USR: 0,016 sec UTC: 1,594 sec
[ErrorCode: 0x00000000]
Появился наш новый контейнер - TestCardCont999
5) Удаляем его:
C:\Program Files\Crypto Pro\CSP>csptest -keys -provtype 75 -deletek -cont "SCARD\MSkey_741ABCB2\A\6969"
CSP (Type:75) v3.6.5359 KC1 Release Ver:3.6.6497 OS:Windows CPU:AMD64 FastCode:NoHardwareSupport.
AcquireContext: OK. HCRYPTPROV: 0
Container SCARD\MSkey_741ABCB2\A\6969 deleted.
Total: SYS: 0,094 sec USR: 0,016 sec UTC: 6,578 sec
[ErrorCode: 0x00000000]
6) Проверяем, что удалился:
C:\Program Files\Crypto Pro\CSP>csptest -keyset -provtype 75 -enum_containers -unique -cont "\\.\OMNIKEY CardMan 3x21 0"
CSP (Type:75) v3.6.5359 KC1 Release Ver:3.6.6497 OS:Windows CPU:AMD64 FastCode:NoHardwareSupport.
AcquireContext: OK. HCRYPTPROV: 1840880
ctc111_al |SCARD\MSkey_741ABCB2\C\8795
OK.
Total: SYS: 0,203 sec USR: 0,031 sec UTC: 2,078 sec
[ErrorCode: 0x00000000]
Да, удалился.
7) Снова пытаемся копировать:
C:\Program Files\Crypto Pro\CSP>csptest -keycopy -provider "Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider" -provdest "Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider" -src "\\.\REGISTRY\rc1111111" -dest "\\.\OMNIKEY CardMan 3x21 0\TestCardCont999"
CSP (Type:75) v3.6.5359 KC1 Release Ver:3.6.6497 OS:Windows CPU:AMD64 FastCode:NoHardwareSupport.
CryptAcquireContext succeeded.HCRYPTPROV: 2366096
CryptAcquireContext succeeded.HCRYPTPROV: 2398112
Total: SYS: 0,188 sec USR: 0,156 sec UTC: 10,484 sec
[ErrorCode: 0x00000000]
Хм.., на этот раз скопировался.
Но мы не делали генерацию пары в исходном контейнере. Сделаем.
8) Генерим пару в регистри-контейнер:
C:\Program Files\Crypto Pro\CSP>csptest -keyset -provtype 75 -cont "\\.\REGISTRY\rc1111111" -addkeypair -exportable
CSP (Type:75) v3.6.5359 KC1 Release Ver:3.6.6497 OS:Windows CPU:AMD64 FastCode:NoHardwareSupport.
AcquireContext: OK. HCRYPTPROV: 2103008
GetProvParam(PP_NAME): Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider
Container name: "rc1111111"
Signature key is not available.
Attempting to create a signature key...
a signature key created.
Exchange key is available. HCRYPTKEY: 0x1fbeb0
Exchange keypair already exist. GenKey() aborted!
Total: SYS: 1,344 sec USR: 0,266 sec UTC: 18,844 sec
[ErrorCode: 0x00000001]
9) Смотрим, что получилось:
C:\Program Files\Crypto Pro\CSP>csptest -keyset -check -cont "\\.\REGISTRY\rc1111111"
CSP (Type:75) v3.6.5359 KC1 Release Ver:3.6.6497 OS:Windows CPU:AMD64 FastCode:NoHardwareSupport.
AcquireContext: OK. HCRYPTPROV: 3151184
GetProvParam(PP_NAME): Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider
Container name: "rc1111111"
Signature key is available. HCRYPTKEY: 0x2fb9a0
Exchange key is available. HCRYPTKEY: 0x2fba10
Check key passed.
Certificate in container matches AT_KEYEXCHANGE key.
Keys in container:
signature key
exchange key
Total: SYS: 0,094 sec USR: 0,094 sec UTC: 4,453 sec
[ErrorCode: 0x00000000]
Видим, что в регистри-контейнере две пары. Хорошо.
10) Копируем этот контейнер на карту (выбрав другое имя целевого контейнера - TC_NEW_1234):
C:\Program Files\Crypto Pro\CSP>csptest -keycopy -provider "Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider" -provdest "Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider" -src "\\.\REGISTRY\rc1111111" -dest "\\.\OMNIKEY CardMan 3x21 0\TC_NEW_1234"
CSP (Type:75) v3.6.5359 KC1 Release Ver:3.6.6497 OS:Windows CPU:AMD64 FastCode:NoHardwareSupport.
CryptAcquireContext succeeded.HCRYPTPROV: 2300512
CryptAcquireContext succeeded.HCRYPTPROV: 2332528
Total: SYS: 0,156 sec USR: 0,125 sec UTC: 9,375 sec
[ErrorCode: 0x00000000]
11) Смотрим, что на карте теперь:
C:\Program Files\Crypto Pro\CSP>csptest -keyset -provtype 75 -enum_containers -unique -cont "\\.\OMNIKEY CardMan 3x21 0"
CSP (Type:75) v3.6.5359 KC1 Release Ver:3.6.6497 OS:Windows CPU:AMD64 FastCode:NoHardwareSupport.
AcquireContext: OK. HCRYPTPROV: 2496240
TestCardCont999 |SCARD\MSkey_741ABCB2\A\6969
TC_NEW_1234 |SCARD\MSkey_741ABCB2\B\678F
ctc111_al |SCARD\MSkey_741ABCB2\C\8795
OK.
Total: SYS: 0,125 sec USR: 0,047 sec UTC: 1,688 sec
[ErrorCode: 0x00000000]
Всё правильно:
один старый контейнер, который мы не трогали (ctc111_al),
один, который мы добавили на предыдущих шагах (TestCardCont999),
и один новый (TC_NEW_1234).
12) Удаляем самый новый:
C:\Program Files\Crypto Pro\CSP>csptest -keys -provtype 75 -deletek -cont "SCARD\MSkey_741ABCB2\B\678F"
CSP (Type:75) v3.6.5359 KC1 Release Ver:3.6.6497 OS:Windows CPU:AMD64 FastCode:NoHardwareSupport.
AcquireContext: OK. HCRYPTPROV: 0
Container SCARD\MSkey_741ABCB2\B\678F deleted.
Total: SYS: 0,109 sec USR: 0,000 sec UTC: 6,468 sec
[ErrorCode: 0x00000000]
13) Проверяем, удалился ли:
C:\Program Files\Crypto Pro\CSP>csptest -keyset -provtype 75 -enum_containers -unique -cont "\\.\OMNIKEY CardMan 3x21 0"
CSP (Type:75) v3.6.5359 KC1 Release Ver:3.6.6497 OS:Windows CPU:AMD64 FastCode:NoHardwareSupport.
AcquireContext: OK. HCRYPTPROV: 2103024
TestCardCont999 |SCARD\MSkey_741ABCB2\A\6969
ctc111_al |SCARD\MSkey_741ABCB2\C\8795
OK.
Total: SYS: 0,063 sec USR: 0,047 sec UTC: 1,656 sec
[ErrorCode: 0x00000000]
Да, удалился.
14) Копируем его снова:
C:\Program Files\Crypto Pro\CSP>csptest -keycopy -provider "Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider" -provdest "Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider" -src "\\.\REGISTRY\rc1111111" -dest "\\.\OMNIKEY CardMan 3x21 0\TC_NEW_1234"
CSP (Type:75) v3.6.5359 KC1 Release Ver:3.6.6497 OS:Windows CPU:AMD64 FastCode:NoHardwareSupport.
CryptAcquireContext succeeded.HCRYPTPROV: 3218016
CryptAcquireContext succeeded.HCRYPTPROV: 3250048
Total: SYS: 0,188 sec USR: 0,125 sec UTC: 10,375 sec
[ErrorCode: 0x00000000]
Хм..Скопировался.
15) Проверяем, что на карте:
C:\Program Files\Crypto Pro\CSP>csptest -keyset -provtype 75 -enum_containers -unique -cont "\\.\OMNIKEY CardMan 3x21 0"
CSP (Type:75) v3.6.5359 KC1 Release Ver:3.6.6497 OS:Windows CPU:AMD64 FastCode:NoHardwareSupport.
AcquireContext: OK. HCRYPTPROV: 1644272
TestCardCont999 |SCARD\MSkey_741ABCB2\A\6969
TC_NEW_1234 |SCARD\MSkey_741ABCB2\B\678F
ctc111_al |SCARD\MSkey_741ABCB2\C\8795
OK.
Total: SYS: 0,125 sec USR: 0,047 sec UTC: 1,671 sec
[ErrorCode: 0x00000000]
Да. Контейнер скопировался.
Чудеса, под Windows всё работает.
Разница, как я понимаю, в том, что под линуксом я генерю пару и формирую запрос на сертификат в командной строке, а потом вставляю внутренности запроса в окно на сайте.
А под виндовс, я все эти операции делаю интерактивно - на сайте (понятно, что пара генерится у меня на машине, но тем не менее).
А и еще одно отличие (но не думаю, что это должно как-то влиять) - на виндовс, у меня BioДСЧ, а на линуксе - CryptoPro Source Data (/db1[db2]/kis_1)
Спасибо Вам, maxdm.
Буду ждать ответа от Linux-разработчиков.
Отредактировано пользователем 24 октября 2013 г. 9:18:55(UTC)
| Причина: команды копирования "не влезли" на экран, подправил