Как создать самоподписанные (self-signed) SSL сертификаты

Надоело каждый раз внимательно вычитывать параметры makecert.exe, поэтому решил записать в блог 🙂

Первой командой создаем "корневой" сертификат:

MakeCert.exe -ss root -n "CN=Issuer’s common name" -eku 1.3.6.1.5.5.7.3.1 -r

Второй командой — сертификат подписанный корневым:

MakeCert.exe -pe -ss my -n "CN=test.mysite.ru" -sky exchange -in "Issuer’s common name" -is root -eku 1.3.6.1.5.5.7.3.1

Корневой сертификат будет создан в "Trusted root certification authorities", а второй сертификат — в персональном хранилище.

Для SSL требуется сертификат с целью (purpose) "Server Authentication" (OID=1.3.6.1.5.5.7.3.1), если требуется другая цель, то её можно задать через параметр eku.

Tip: Если вам нужно сделать несколько сертификатов для нескольких поддоменов, то можно использовать wildcards в CN, например: CN=*.mysite.ru

PS. makecert.exe распространяется вместе с Windows SDK (бывшая Platform SDK), которую можно бесплатно скачать с сайта Microsoft.

makecert.exe находится в архиве PSDK-SDK_Core_BIN-x86.0.cab. Так же этот архив находится в архиве PSDK-FULL.5.cab (Windows Server 2003 R2 Platform SDK Full)

.NET Reference Source is now publically available

Ночью пришло письмо от Shawn Burke с благодарностью за участие в тестировании .NET Reference Source project, а самое главное с информацией о том, что исходники .Net для отладки доступны в публичном доступе.

Прежде чем использовать эту возможность нужно поставить обновление для VS 2008, т.к. без него переход с одной строки исходного кода на другую во время отладки происходит очееень медлееееенно, плюс у меня были пару раз проблемы с постоянным отображением EULA диалога. Хотфикс доступен (нужен LiveId) на сайте connect.microsoft.com.

После установки хотфикса запускаем VS 2008 и в настройках отладчика (Tools>Options>Debugging>General) снимаем галочку "Enable Just My Code" и устанавливаем " Enable Source Server Support". " Enable Just My Code", как следует из названия, позволяет отлаживать только ваш код, поэтому её нужно убрать, а " Enable Source Server Support" позволяет использовать сервер с исходными кодами, без неё будут скачиваться только отладочные символы.

Затем нужно перейти на вкладку Symbols и в поле "Symbol file locations" указать http://referencesource.microsoft.com/symbols, также желательно указать папку куда кэшировать отладочные символы и исходники. И поставьте галочку "Search the above locations only when symbols are loaded manually", что позволяет сэкономить трафик интернета при отладке, т.к. не будут скачиваться все отладочные символы, а только для тех модулей, для которых вы выберете "Load Symbols". Если трафика не жалко, то можно не ставить эту опцию, но тогда запуск отладчика будет происходить немного дольше, т.к. будут подгружаться все найденные отладочные символы для загружаемых модулей.

В целом это все настройки.

Tip: исходники скачиваются в папку "dir_to_cachesrc", но после выгрузки VS эта папка пустая, т.е. все файлы исходного кода стираются. Дабы предотвратить удаление установите запрещающие права на удаления у этой папки для всех пользователей. Тогда VS не сможет стереть файлы исходного кода. Но за последствия я не отвечаю 🙂

 

Tags: Visual Studio, .NET Framework Source Code, Debuggig, .NET Reference Source project

Как с помощью T-SQL узнать логическое имя файла БД из бекапа

Для SQL 2005 так:

CREATE TABLE #restoreFiles (LogicalName NVARCHAR(128),

                            PhysicalName NVARCHAR(260),

                            Type CHAR(1),

                            FileGroupName NVARCHAR(128),

                            Size NUMERIC(20, 0),

                            MaxSize NUMERIC(20, 0),

                            FileID BIGINT,

                            CreateLSN NUMERIC(25, 0),

                            DropLSN NUMERIC(25, 0) NULL,

                            UniqueID UNIQUEIDENTIFIER,

                            ReadOnlyLSN NUMERIC(25, 0) NULL,

                            ReadWriteLSN NUMERIC(25, 0) NULL,

                            BackupSizeInBytes BIGINT,

                            SourceBlockSize INT,

                            FileGroupID INT,

                            LogGroupGUID UNIQUEIDENTIFIER NULL,

                            DifferentialBaseLSN NUMERIC(25, 0) NULL,

                            DifferentialBaseGUID UNIQUEIDENTIFIER,

                            IsReadOnly BIT,

                            IsPresent BIT)

 

INSERT  INTO #restoreFiles

EXEC (‘RESTORE FILELISTONLY FROM DISK=»letter:pathfilename.BAK»’)

 

DECLARE @logicalDataFile NVARCHAR(128),

    @logicalLogFile NVARCHAR(128)

 

SELECT  @logicalDataFile = LogicalName

FROM    #restoreFiles

WHERE   Type = ‘D’

 

SELECT  @logicalLogFile = LogicalName

FROM    #restoreFiles

WHERE   Type = ‘L’

 

DROP TABLE #restoreFiles

 

SELECT  @logicalDataFile, @logicalLogFile 

 Для SQL 2000 примерно также, только полей во временной таблице поменьше.

Tags: SQL 2005, SQL 2000, RESTORE FILELISTONLY, Logical file name

CMD поддерживает Unicode имена файлов

Unicode имена – это имена в формате \?диск:путь к файлуимя файла. О преимуществах Unicode-именования можно прочитать в MSDN статьях CreateFile Function и Naming a File.

Мне чаще всего Unicode имена нужны были для решения проблем с "неудаляемыми" файлами, например, имя файла оканчивается на точку ("test."). Такой файл нельзя удалить обычными средствами и мне каждый раз приходилось писать программку и обращаться к нему по Unicode имени.

А оказывается Unicode имена понимает и обычный cmd.

Создаём файл с точкой на конце:

>@echo test>\?c:test.

>dir test

 Directory of C:

05.01.2008  11:55                 6 test.

Пробуем удалить:

>del test.

Could Not Find C:test.

Пробуем удалить используя Unicode имя файла

>del \?c:test.

>dir test

 Directory of C:

File Not Found

 

Tags: cmd, Unicode, Cannot delete file

Перезапуск Explorer в Windows Vista и Windows Server 2008

Давным-давно, до выхода Vista, разработчикам Shell Extensions иногда необходимо было выгрузить Explorer и снова загрузить. Кто-то обходился убиванием проводника в Task Manager и прочих process утилитах, а кто-то (кто читает MSDN) знал, что если вызвать диалог завершения работы и там зажав Ctrl+Shift+Alt кликнуть по кнопке Cancel, то shell сам легально выгрузится.

После выхода Windows Vista потребность в легальном завершении explorer.exe осталась (а куда ей деться), но в Vista (как и в Windows Server 2008) почему-то убрали вызов диалога завершения работы из меню Start.

Я нашел два способа как таки вызвать этот диалог (в котором продолжает работать Ctrl+Shift+Alt+Click Cancel):

  1. когда фокус ввода на рабочем столе нажать Alt+F4;
  2. как это ни удивительно, но вызвать либо из StartRun либо из командной строки либо ещё как taskkill /im explorer.exe

Оба способа также работают в Windows Server 2003 (скорее всего, работают и на XP).

Upd:

В Non-Admin блоге Aaron Margosis есть пост на эту тему, в нём рассказывается об ещё одном способе: в меню старт зажимая клавиши Ctrl+Shift кликаем на пустом месте правой кнопкой мыши и выбираем "Exit Explorer" (работает только в Vista и Windows Server 2008).

 

 

Tags: Vista, Windows Server 2008, Debug, Shut Down, Explorer, Shell

Singularity V2.0

Тихо и незаметно Microsoft Singularity Research Team объявили о завершении работы над Singularity version 1.0 и начале работы над версией 2.0. произошло это, видимо, в середине 2007-го года. На официальной странице проекта сказано буквально следующее: "Singularity Version 1.0 is complete. We’re moving our research forward to the development of Singularity V2.0. We’ve shipped the Singularity V1.0 Research Development Kit (RDK) to a small number of universities for their research efforts". Как бы нашему вузу попасть в этот "маленький список университетов"… Видимо никак 😦

Также на сайте появились ссылки на новые статьи.

Tags: Microsoft, Singularity

Links: http://research.microsoft.com/os/singularity/