понедельник, 16 июня 2008 г.

Пересборка дистрибутива Damn Small Linux для загрузки по сети

Загружаемся с LiveCD или по сети

Делаем все необходимые настройки
Устанавливаем необходимое ПО

далее создаем папку в которой будет храниться новый образ KNOPPIX

mkdir /ramdisk/tmp/source
Копируем текущую систему в папку source

cp -Rp /KNOPPIX/* source
cp -Rp /KNOPPIX/.bash_profile source

если устанавливали дополнительное ПО то копируем папки куда ставили ПО
например:

cp -Rp /opt/* source/opt/
cp -Rp /usr/java source/usr/

копируем сделанные настройки
cp -Rp /home/dsl/.* source/etc/skel/

так же настройки можно добавить в
/etc/skel/.bashrc

далее собираем образ

mkisofs -R source | create_compressed_fs – 65536 > KNOPPIX
копируем его на носитель

Далее собираем initrd.gz
для этого распаковываем minirt24.gz

gunzip initrd.gz
losetup /dev/loop0 initrd
mount -t ext2 /dev/loop0 /mnt
в папке /mnt получаем содержание initrd

копируем в другую папку(initrd-tree)
Отключение:
umount /mnt
losetup -d /dev/loop0


В папке
cdrom/KNOPPIX/
заменяем файл KNOPPIX вновь созданным

перед директорие й initrd-tree кладем скрипт
makeext2initrd.sh
#!/bin/sh





PWD="`pwd`"

SOURCE_TREE="$PWD/initrd-tree"

OUTPUT_IMAGE="$PWD/initrd.gz"

KERNEL_VERSION="$(uname -r)"

#PUPPYVERSION="`cat $SOURCE_TREE/PUPPYVERSION`"





# Calculate size needed for initrd:

#SIZE=`du -s -k $SOURCE_TREE | tr "\t" " " | cut -f 1 -d ' '`

SIZE=100000

# Add a bit of padding:

PAD=900 #600 #600 #160 #98 THIS IS WEIRD HAD TO INCREASE THIS FROM 160 TO 600 v2.12!!!

TRIMOFF=800

#if [ -f $SOURCE_TREE/pup_$PUPPYVERSION.sfs ];then #v2.16rc

#humongous, padding needs to be adjusted...

#PAD=3100 #1800

#TRIMOFF=0

#fi



#SIZE=`expr $SIZE + $PAD`



TMPSIZE=98000

echo "tmp size=${TMPSIZE}"

#TMPSIZE=`expr $TMPSIZE + 500`

mkdir /tmp/tmpfs

mount tmpfs /tmp/tmpfs -t tmpfs -o size=${TMPSIZE}k

mkdir /tmp/tmpfs/mntpt



echo "Size of ext2 filesystem is ${SIZE}KB"



# Make an empty file of the proper size:

dd if=/dev/zero of=/tmp/tmpfs/initrd-tmp bs=1k count=$SIZE #2> /dev/null

sync

# Create a filesystem on it:

mke2fs -m 0 -F /tmp/tmpfs/initrd-tmp #1> /dev/null 2> /dev/null

sync

# Fix broken ext2fs defaults:

tune2fs -c 0 -i 0 -m 0 /tmp/tmpfs/initrd-tmp #1> /dev/null 2> /dev/null

sync

# Mount the initrd-to-be:

losetup /dev/loop0 /tmp/tmpfs/initrd-tmp

mount -t ext2 /dev/loop0 /tmp/tmpfs/mntpt





# Populate the initrd image:

( cd $SOURCE_TREE

cp -a * /tmp/tmpfs/mntpt

)



#v2.16rc...

#rm -f /tmp/tmpfs/mntpt/init

#ln -s sbin/init /tmp/tmpfs/mntpt/linuxrc

#if [ -d /tmp/tmpfs/mntpt/dev0 ];then

# rmdir /tmp/tmpfs/mntpt/dev

# mv /tmp/tmpfs/mntpt/dev0 /tmp/tmpfs/mntpt/dev

#fi





#mkdir /tmp/tmpfs/mntpt/.root_ro

#mkdir /tmp/tmpfs/mntpt/.root_rw

## Make sure we have any block devices that might be needed:

#SLOPPY_DEV_LIST=$(cat /proc/partitions)

#for device in $SLOPPY_DEV_LIST ; do

# if [ ! -r $SOURCE_TREE/dev/$device -a -b /dev/$device ]; then

# cp -a /dev/$device $SOURCE_TREE/dev

# fi

#done



# Unmount the initrd and move it into place:

sync

umount /dev/loop0

rmdir /tmp/tmpfs/mntpt

#gzip -9 /tmp/tmpfs/initrd-tmp

#rm -f $OUTPUT_IMAGE

#mv /tmp/tmpfs/initrd-tmp.gz $OUTPUT_IMAGE

sync





#attempt size reduction, that huge empty space...

rm -f initrd

rm -f initrd.gz

DOWNSIZE=98000

sync

resize2fs -pf /tmp/tmpfs/initrd-tmp $DOWNSIZE

sync

dd if=/tmp/tmpfs/initrd-tmp of=initrd bs=1k count=$DOWNSIZE

sync

e2fsck -y -f initrd

sync

rm -f /tmp/tmpfs/initrd-tmp

gzip -9 initrd

sync



umount /tmp/tmpfs

rmdir /tmp/tmpfs



#v2.15 save the size, needed by createpuppy...

echo -n "$SIZE" > /tmp/initrdsize.txt

sync

####END####


запускаем его и получаем файл initrd.gz
переименовываем в minirt24.gz
кладем в vmlinuz
и грузимся по сети
все готово

вторник, 12 февраля 2008 г.

Настройка SSL аутентификации в Tomcat

Создание центра сертификации:
Создаем сертификат и подписываем его
/usr/lib/ssl/misc/CA.pl
#CA -newca ... will setup the right stuff
# CA -newreq[-nodes] ... will generate a certificate request
# CA -sign ... will sign the generated request and output

меняем
dir = /usr/lib/ssl/misc/demoCA
в /usr/lib/ssl/openssl.cnf


После этого необходимо создать две пары ключей (для сервера и клиента) и подписать их сертификаты нашим CA.
1. (сервер)
openssl req -nodes -new -x509 -keyout server.pem -out server.pem -days 365
openssl x509 -x509toreq -in server.pem -signkey server.pem -out tmp.pem
openssl ca -out servercert.pem -infiles tmp.pem
CN в сертификате должен соответствовать имени хоста на для которого предназначен данный сертификат

После этого создаем кейсторе с приватным ключом и подписанным сертификатом
openssl pkcs12 -export -in servercert.pem -inkey server.pem -out server.p12 -name "tomcat"


Затем имортируем cacert (паблик сертификат CA) в %JAVA_HOME%/jre/lib/security/cacerts
keytool -import -keystore cacerts -alias "our ca" -file cacert.pem
пароль по умолчанию на cacert - changeit
Если не импортируется, удалить из сертификата все кроме самого сертификата(т.е. оставить только —Begin-- .... --END--)

Без этого шага томкат не сможет найти даверенного CA и при установление соединения в эксплорере появится пустой список сертификатов.

Теперь настраиваем наш connector

<Connector port="8443" scheme="https" sslProtocol="TLS" secure="true"
disableUploadTimeout="true" acceptCount="100" allowTrace="true"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75">
<Factory className="org.apache.coyote.tomcat5.CoyoteServerSocketFactory"
keystorePass="password"
keystoreFile="conf\server.p12" clientAuth="true"/>
</Connector>

2. (клиент, аналогично серверу)
openssl req -nodes -new -x509 -keyout client.pem -out client.pem -days 365
openssl x509 -x509toreq -in client.pem -signkey client.pem -out tmp.pem
openssl ca -out clientcert.pem -infiles tmp.pem
openssl pkcs12 -export -in clientcert.pem -inkey client.pem -out client.p12 -name "client"


Затем имортируем cacert (паблик сертификат CA) в наш браузер в качестве доверенного CA(и выбираем всюду - доверять) и client.p12 в в качестве личного сертификата.

Все. Пускаем томкат, пускаем браузер и стучимся по https.