Информация за всички Windows услуги

Лесен начин за показване на списък с пътищата на всички windows services:

Лесно може да се модифицира, за да се показва друга информация за service-a като:

Поправка на Firebird база данни

Firebird база данни (http://firebirdsql.com/) е отлична база данни с лесна инсталация и добри SQL възможности.

За съжаление файла, в който се съхранява базата данни (.fdb или .gdb) е по-вероятно да се повреди при спиране на тока. Още по-лошо е, че невинаги може да  се разбере веднага, че има проблем и грешките се натрупват.

Обикновено това се забелязва или при backup/ restore операция или при работа с IBExpert. Грешката е подобна на:

wrong (missing?) page #XXXX

или друго подобно, като обикновено се упоменава някакъв page, понякога wrong checksum или wrong pagetype.

За радост положението не е толкова лошо, колкото изглежда. Версиите на Firebird имат винаги checksum 12345 = 0x3039. Размерът на страницата е 4096 байта, но това може да се провери с gstat

Например, ако имаме грешка в страница 23069, то позицията във файла на тази страница е
23069 * 4096 = 94490624 (0x5A1D000)

С hex редактор гледаме какво има на този адрес, например

0x5A1D000: 01 00 3C 30 00 00 …

Това очевидно е сбъркано – вместо 3C 30 трябва да се запише checksum 39 30 (заради endian формата), а първия байт е типа на страницата. Обикновено може да се разбере какъв тип се очаква по грешката, която е възникнала, ако не – тук са описани типовете страници и какво означават.

След закърпването на базата задължително трябва да се направи пълен backup и restore. Важно е да се отбележи, че данните в тази страница най-вероятно са загубени, съответно и част от данните.

Част от информацията е от този линк: http://ybinzu.blogspot.com/2009/08/bad-checksum-firebird.html

Инсталиране Windows 8 Release Preview във виртуална машина

При инсталация на Windows 8 Release Preview на Virtual Box понякога се получава следното:

“Your PC needs to restart”

При Virtual PC резултатът е за съжаление същия. След известно четене в Google видях, че Windows 8 Release Preview има следните изисквания към процесора:

Physical Address Extension (PAE), NX, and SSE2

 

За първото и последното няма какво да се направи, но второто (NX, Execute Disabled) обикновено е опция в BIOS-a. Обнадежден проверих дали това е проблемът при мене, но уви – беше включено. На други места предлагаха от Performance Options->Data Execution Prevention->Turn On DEP for all programs.

При мене и това не се оказа успешно, но в крайна сметка това което имаше резултат е инсталация във VMWare Player (вероятно в комбинация с горните).

Apache и SSL сертификати

Вече съм писал веднъж как се инсталират SSL сертификати под различни web сървъри.

В случай, че имате Apache 2 сървър и SSL частен ключ с парола при всяко стартиране на Apache ще излиза съобщение като това:

 

Това е secure, но със сигурност inconvenient в повечето случаи. Има (поне) два варианта за решение:

 

1. Може да се махне паролата на сертификата като се използва информацията от bloga на Chris Schuld и OpenSSL

Не съм го пробвал, но би трябвало да работи според коментарите

2. Автоматично да се извлича паролата от stdin с допълнително приложение – информацията намерих във форума на LinuxQuestions

В httpd-ssl.conf се подменя начина да запитване за парола от bultin на изпълним файл

 

 

а самия изпълним файл е нещо от сорта на (Apache трябва да има права да изпълни файла):

 

 

И двата метода намаляват сигурността на частния ключ – в единия случай премахваме паролата от файла, в другия предоставяме паролата в относително plain text. Въпрос на избор 🙂

(Java) Sun MSCapi provider на x64 Windows

В Java 6 е добавен удобен и лесен начин за достъп до сертификатите от Windows Crypto store чрез

 

За съжаление горното работи само, ако JRE е 32 битово. Ако JRE 64 битово, то SunMSCAPI не се поддържа. Което е най-малкото странно. Има няколко thread-a по въпроса в интернет например тук: http://forums.oracle.com/forums/thread.jspa?threadID=1526024

 

Общо взето това, което предлагат е да се прекомпилира sunmscapi.dll и да се постави в bin директория на JRE

Source-a на OpenJDK6 се сваля лесно и бързо, за съжаление компилацията на цялото JDK е доста времеотнемаща задача, а ако е нужно само да се прекомпилира sunmscapi.dll няма нужда да се прави. Може да се съкрати до следните стъпки:

  1. Сваля се source-a на OpenJDK 6 от тук
  2. Изтегля се x64 Windows SDK април 2005 от тук
  3. Компилация на sunmscapi.dll
  4. Конфигуриране

 

 

Най-удачно е Crypt32.lib, Advapi32.liv, bufferoverflowU.lib в съответната папка от x64 битовите папки на машината

Горната команда ще генерира 64 битов sunmscapi.dll, като cl.exe e Microsoft-ския компилатор за AMD64. DLL-а се копира в bin директорията на JRE.

В Jre6libsecurityjava.security се добавя следния ред в секцията за security providers:

 

В Jre6libext се копира sunmscapi.jar от друга инсталация на JRE6 (32 bit). Може и да се компилира директно от кода, но е доста по-лесно да се копира от друга 32 битова JRE.

SSL Certificate за IIS/ Apache/ Tomcat

Как да си инсталираме SSL сертификата на уеб сървърите. Още повече, ако сертификатът е wildcard, сървърите са различни и го имаме като двойак частен ключ + сертификат

Нека за по-ясно това са файловете, които получаваме от CA:

private.key – частен ключ

certificate.crt – сертификат

и двата файла са в PEM формат. Първа стъпка е да инсталираме OpenSSL за нашата OS/ платформа от www.openssl.org

IIS

 

 

Въвежда се парола за резултатния сертификат и готово! pfx файла може да се инпортира в IIS и да се изпозлва като SSL сървърен сертификат

Apache Tomcat 5.0

В зависимост от версията на Tomcat се поддържа Java Key Store (JKS) или PKCS12. Аз не успях да подкарам директно pfx файла, затова се принудих да импортирам в JKS. Инструкции за това може да се намерят например на http://www.agentbob.info/agentbob/79-AB.html

Накратко – keytool инструмента не може да импортира директно частния ключ и трябва да се направи програмно. Първо конвертираме сертификатите в DER формат отново с OpenSSL

Сваля се следния файл ImportKey.java и се компилира с Java 1.5+. Следваща стъпк а е да се изпълни следното:

Ако сме под Windows файлът се създава в папката на текущия потребител, например: C:UsersAdministratorkeystore.ImportKey. В конфигурацията на Tomcat 5.0 (server.xml) трябва да се доави Connector секция, за да работи 443-ти порт като https

 

Рестартира се Tomcat и вече всичко трябва да работи нормално

Tomcat 7.0

Конфигурирането е по-лесно и се указва директно частен ключ и сертификат. Използва се същата схема както и в Apache 2

Tomcat трябва да се рестартира, за да влязат промените в сила.

Apache 2

Конфигурацията тук е най-лесна. Само се указва частния ключ и сертификата в httpd.conf (или ssl.conf) и се пуска SSL поддръжка

SSLCertificateFile (сертификат) и SSLCertificateKeyFile (частен ключ)

Ако има intermediate CA, то пътя до него се записва в SSLCertificateChainFile

След това е нужно да се рестартира Apache, например с

 

Генериране на частен ключ от PFX и премахване на паролата

 

 

 

Authentication and Access Control Diagnostics за IIS

Всеки път като се боря с проблеми с IIS съм искал да имам инструмент като този: Authentication and Access Control Diagnostics

Честно казано – продължавам да искам, защото този е само x86 и е правен в тъмните векове на IIS 5.0 и 6.0, но предоставя добра информация и за IIS 7.0. Базови неща като проблеми с достъпа, потребители и authentication (аутентикация ли се превежда това?). Как досега не съм се натъквал на това? Мистерия…

Мигриране от Blogger към BlogEngine.net

След като реших да сменя адреса и engine-a зад блога остана задачата да прехвърля стартите постове към blogEngine. Вариант е да се въведат на ръка като текст, но някак си идеята не ми харесваше. Реших, че ще търся по-добрият начин. Не непременно по-бързия :))

BlogEngine.net поддържа импорт от BlogML формат, а през clickOnce приложение включено в самата дистрибуция (много добра идея!) може да се импортира и от RSS feed.

Първото нещо, което направих разбира се беше да потърся в google. Това, което излезе е много добра  статия как да прехвърлим постовете от Blogger v BlogML формат използвайки powershell. За съжаление, това не сработи в моя случай поради грешка в authorUri, а в последствие и поради други грешки.

Вторият опит беше да създам блог в WordPress.com, в който съвсем лесно може да се изтеглят постовете, коментарите и картинките от Blogger.

Дотук добре. Следващата стъпка беше да използвам BlogImporter-a на BlogEngine.net и да импортирам rss-a от WordPress блога. Това сработи и бях много шастлив до момента, до който не видях, че повечето постове са съкратени до няколко реда и имат Continue Reading в края, което сочеше … към wordpress блога. Много неприятно развитие…. Изглежда WordPress след версия 2.8 (май) в RSS-a подава само част от информацията (независимо от настройките).

Трети опит (и този път успешен)

Регистрирах блога във FeedBurner и това вече реши (почти) всичките ми неприятности. Импортът мина безпроблемно и се появиха всички постове. Без коментарите. И без снимките. Тоест – със снимките, но те сочеха към старите линкове. Но всичко останало работеше – включително датите 🙂

.NET 3.5 SP1 Bootstrapper package във Visual Studio 2008 SP1

В долния документ има секция 2.3.1.1, в който е описано как да добавим .NET 3.5 SP1 като bootstrapper в ClickOnce и Setup проекти:

http://download.microsoft.com/download/A/2/8/A2807F78-C861-4B66-9B31-9205C3F22252/VS2008SP1Readme.htm