Slackware 12.2
主要内容:基本配置、X和本地化、应用软件、网络服务、普通用户、附录。
1 基本配置
1.1 初始安装
选择除kdei之外的所有软件包,进行全部安装。
kdei只安装简体中文(zh_CN)和繁体中文(zh_TW)包,共4个安装文件。
不安装引导管理器。
配置网络。
启动服务:rc.fuse、rc.hald、rc.messagebus、rc.syslog和rc.sshd。
1.2 引导配置
这里Slackware是通过别的系统上的grub来进行引导的。在Slackware下安装grub来负责多重系统引导的方法见:Grub多重引导。
编辑grub所在系统的menu.lst,增加Slackware的启动项。以amd64机器为例:
title Slackware 12.2 (2.6.27.7-smp) root (hd1,6) kernel /boot/vmlinuz-huge-smp-2.6.27.7-smp ro root=/dev/sdb7
1.3 切换为generic内核
制作initrd:
# cd /boot # mkinitrd -c -m ext3
编辑grub所在系统的menu.lst,增加启动项:
title Slackware 12.2 (2.6.27.7-generic-smp) root (hd1,6) kernel /boot/vmlinuz-generic-smp-2.6.27.7-smp ro root=/dev/sdb7 initrd /boot/initrd.gz
重新启动。
1.4 安装补丁
一般来说,安装一个系统并不总是在该系统刚刚发布之时,此时可能已经有一些补丁程序。新系统的第一步就是安装这些补丁,填补发现的漏洞。
选择一个速度快的镜像站点下载补丁程序(位于slackware-12.2/patches/packages),在安装系统之前先准备好这些补丁(如果有的话)。
首先进入单用户模式:
# init 1
进入补丁所在目录,更新:
# upgradepkg *.tgz
以上是一般操作步骤。有些特殊补丁会有额外的操作,根据安全公告的详细描述进行相应处理。
附:我一般用lftp在本地建立一个补丁包镜像,供本地所有系统使用,以避免重复下载。如:
duangw@slackware:~/ftp/slackware$ cat mirror-12.2.sh lftp -e "mirror -ner slackware-12.2; \ cd slackware-12.2; \ lcd slackware-12.2; \ mirror -ne patches; \ bye" \ http://slackware.cs.utah.edu/
通过关注Slackware的ChangeLogs,或订阅邮件列表,来了解更新动态。
1.5 编译内核(amd64机器)
当前的内核配置只能使用3G内存,为了识别全部4G内存,需要打开内核的PAE选项。同时将CPU类型设置为AMD64,以打开一些相关特性。
内核配置基于generic-smp版本:
# cd /usr/src/linux # make mrproper # cp /boot/config-generic-smp-2.6.27.7-smp .config # make menuconfig
几个选项设置:
(1).为了与原来的内核文件区别,增加-PAE后缀:
General setup ---> (-smp-pae) Local version - append to kernel release
(2).设置CPU类型和PAE:
Processor type and features ---> Processor family (Opteron/Athlon64/Hammer/K8) ---> (X) Opteron/Athlon64/Hammer/K8 High Memory Support (64GB) ---> (X) 64GB
编译安装:
# make # make modules_install # cp System.map /boot/System.map-generic-smp-2.6.27.7-smp-pae # cp .config /boot/config-generic-smp-2.6.27.7-smp-pae # cd arch/x86/boot # cp bzImage /boot/vmlinuz-generic-smp-2.6.27.7-smp-pae
制作initrd:
# cd /boot # mkinitrd -c -k 2.6.27.7-smp-pae -m ext3
编辑grub所在系统的menu.lst,增加新内核的启动项:
title Slackware 12.2 (2.6.27.7-generic-smp-pae) root (hd1,6) kernel /boot/vmlinuz-generic-smp-2.6.27.7-smp-pae ro root=/dev/sdb7 initrd /boot/initrd.gz
重新启动。
1.6 检查网络设置
在初始安装时进行了网络配置,这样可以省很多功夫。
由于是多网卡机器,需要查看udev配置文件/etc/udev/rules.d/70-persistent-net.rule,确保网卡编号的正确。
编辑/etc/rc.d/rc.inet1.conf,配置其余网卡的IP地址等参数。
如果修改别的选项,则还涉及:
- /etc/HOSTNAME
- /etc/hosts
- /etc/networks
- /etc/resolv.conf
1.7 挂载分区(amd64机器)
创建挂载点:
# mkdir /pub
编辑/etc/fstab,增加:
/dev/sda7 /pub ext3 defaults 1 2 /dev/sdb8 /pub/ext3 ext3 defaults 1 3 /dev/hda4 /pub/ext3b ext3 defaults 1 4 /dev/sda5 /pub/fat vfat defaults,fmask=133,utf8 0 0 /dev/sda6 /pub/ntfs ntfs-3g defaults,umask=022,fmask=133,locale=zh_CN.UTF-8 0 0
这里取消了FAT分区和NTFS分区中的文件的执行权限,体现在fmask参数上。
NTFS分区的读写采用ntfs-3g工具来处理,由于ntfs-3g缺省的文件掩码为0,不像FAT自动继承用户的umask设置,所以增加了umask选项。
此外,两者都采用UTF-8编码。
1.8 配置声卡
执行:
# alsaconf
选择对应的声卡型号,创建声卡数据。
1.9 配置防火墙脚本
有关各个iptables脚本的详细内容见:Iptables脚本。
这里使用客户机脚本rc.iptables-client.ref:
# cp /newpkg/rc.iptables-client.ref /etc/rc.d/rc.iptables # chmod a+x /etc/rc.d/rc.iptables
修改/etc/rc.d/rc.S文件,在末尾添加模板rc.S.ref的内容。
1.10 设置内核参数
有关脚本的详细内容见:Sysctl脚本。
# cp /newpkg/rc.sysctl.ref /etc/rc.d/rc.sysctl # chmod a+x /etc/rc.d/rc.sysctl
编辑/etc/rc.d/rc.M,将模板rc.M.ref内容加入到rc.inet2的前面。
1.11 配置PPPOE(可选)
# pppoe-setup
设置用户名、密码、网卡接口(eth0)、选择不要防火墙,由ISP提供DNS地址。
拨号:
# pppoe-start
断开:
# pppoe-stop
查看状态:
# pppoe-status
1.12 建立普通用户
这里使用一个额外的分区(挂载在/pub目录下)来存放所有系统的普通用户文件(amd64机器):
# mkdir /pub/home/slackwre-12.2 # cd /home # mv * /pub/home/slackware-12.2/ # cd / # rmdir home # ln -s /pub/home/slackware-12.2/ home
添加普通用户:
# useradd -m -s /bin/bash duangw
编辑/etc/group文件,将用户添加到audio、cdrom和plugdev组,以便能使用声卡、K3B和u盘等设备:
audio:x:17:root,duangw cdrom:x:19:root,duangw plugdev:x:83:root,duangw
2 X和本地化
2.1 配置Xwindow
执行xorgsetup,配置Xwindow,一切都按缺省值:
# xorgsetup
弄好后,执行startx,看看能正常启动Xwindow就行了。即使因为驱动问题启动不了也没关系,这只是初始配置,后面还要专门安装显卡驱动。
2.2 安装Nvidia显卡驱动
从Nvidia官方网站www.nvidia.com下载Linux驱动。
安装(amd64机器):
# sh NVIDIA-Linux-x86-177.82-pkg1.run
注:i386机器上使用的是另外一类的驱动程序。
2.3 设置scim
启用scim中文输入法:
# cd /etc/profile.d # chmod +x scim.*
2.4 安装compiz fusion(可选)
这里使用slackbuilds.org提供的脚本来编译安装。
从compiz-fusion.org下载相应版本的源代码包。
根据脚本建议的顺序构建各个软件包。以下是在本机的操作步骤:
# cd /sources # tar xzvf compiz-bcop.tar.gz # tar xzvf libcompizconfig.tar.gz # tar xzvf compizconfig-backend-kconfig.tar.gz # tar xzvf compizconfig-python.tar.gz # tar xzvf ccsm.tar.gz # tar xzvf simple-ccsm.tar.gz # tar xzvf compiz-fusion-plugins-main.tar.gz # tar xzvf compiz-fusion-plugins-extra.tar.gz # tar xzvf emerald.tar.gz # tar xzvf emerald-themes.tar.gz # tar xzvf fusion-icon.tar.gz # cd compiz-bcop # cp /pub/software/compiz/compiz-bcop-0.7.8.tar.gz . # ./compiz-bcop.SlackBuild # installpkg tmp/compiz-bcop-0.7.8-i486-1_SBo.tgz # cd ../libcompizconfig # cp /pub/software/compiz/libcompizconfig-0.7.8.tar.gz . # ./libcompizconfig.SlackBuild # installpkg tmp/libcompizconfig-0.7.8-i486-1_SBo.tgz # cd ../compizconfig-backend-kconfig # cp /pub/software/compiz/compizconfig-backend-kconfig-0.7.8.tar.gz . # ./compizconfig-backend-kconfig.SlackBuild # installpkg tmp/compizconfig-backend-kconfig-0.7.8-i486-1_SBo.tgz # cd ../compizconfig-python # cp /pub/software/compiz/compizconfig-python-0.7.8.tar.gz . # ./compizconfig-python.SlackBuild # installpkg tmp/compizconfig-python-0.7.8-i486-1_SBo.tgz # cd ../ccsm # cp /pub/software/compiz/ccsm-0.7.8.tar.gz . # ./ccsm.SlackBuild # installpkg tmp/ccsm-0.7.8-i486-1_SBo.tgz # cd ../simple-ccsm # cp /pub/software/compiz/simple-ccsm-0.7.8.tar.gz . # ./simple-ccsm.SlackBuild # installpkg tmp/simple-ccsm-0.7.8-i486-1_SBo.tgz # cd ../compiz-fusion-plugins-main # cp /pub/software/compiz/compiz-fusion-plugins-main-0.7.8.tar.gz . # ./compiz-fusion-plugins-main.SlackBuild # installpkg tmp/compiz-fusion-plugins-main-0.7.8-i486-1_SBo.tgz # cd ../compiz-fusion-plugins-extra # cp /pub/software/compiz/compiz-fusion-plugins-extra-0.7.8.tar.gz . # ./compiz-fusion-plugins-extra.SlackBuild # installpkg tmp/compiz-fusion-plugins-extra-0.7.8-i486-1_SBo.tgz # cd ../emerald # cp /pub/software/compiz/emerald-0.7.8.tar.gz . # ./emerald.SlackBuild # installpkg tmp/emerald-0.7.8-i486-1_SBo.tgz # cd ../emerald-themes # cp /pub/software/compiz/emerald-themes-0.5.2.tar.gz . # ./emerald-themes.SlackBuild # installpkg tmp/emerald-themes-0.5.2-i486-1_SBo.tgz # cd ../fusion-icon # cp /pub/software/compiz/fusion-icon-0.01.tar.gz . # ./fusion-icon.SlackBuild # installpkg tmp/fusion-icon-0.01-i486-1_SBo.tgz
从"System"菜单执行"Compiz Fusion Icon",即可开启3D桌面效果。
3 应用软件
3.1 安装kchmviewer
从kchmviewer主页www.kchmviewer.net下载kchmviewer-3.1-2.tar.gz。
这里使用slackbuilds.org提供的脚本包kchmviewer.tar.gz来编译安装:
# cd /sources # tar xzvf kchmviewer.tar.gz # cd kchmviewer # cp /pub/software/kchmviewer/kchmviewer-3.1-2.tar.gz . # ./kchmviewer.SlackBuild # cd /tmp # installpkg kchmviewer-3.1-2-i486-1_SBo.tgz # cp kchmviewer-3.1-2-i486-1_SBo.tgz /newpkg
3.2 安装媒体播放器mplayer
从slackbuilds.org获得编译脚本mplayer-codecs-all.tar.gz和mplayer.tar.gz。
从mplayer官方网站www.mplayerhq.hu下载源代码包mplayer-svn_r27865.tar.bz2、解码器all-20071007.tar.bz2。
安装解码器:
# cd /sources # tar xzvf mplayer-codecs-all.tar.gz # cd mplayer-codecs-all/ # cp /pub/software/mplayer/all-20071007.tar.bz2 . # ./mplayer-codecs-all.SlackBuild # cd /tmp # installpkg mplayer-codecs-all-20071007-i486-1_SBo.tgz # mv mplayer-codecs-all-20071007-i486-1_SBo.tgz /newpkg/
安装mplayer:
# cd /sources # tar xzvf mplayer.tar.gz # cd mplayer/ # cp /pub/software/mplayer/mplayer-svn_r27865.tar.bz2 .
调整脚本,关闭CPU检测,因为当前只在本机上使用。以后如果要为别的机器编译软件包,再重新调回来:
# cp mplayer.SlackBuild mplayer.SlackBuild-bak # vi mplayer.SlackBuild # diff mplayer.SlackBuild mplayer.Slackbuild-bak 50c50 < RUNTIME_CPU=${RUNTIME_CPU:-no} --- > RUNTIME_CPU=${RUNTIME_CPU:-yes}
编译:
# ./mplayer.SlackBuild # cd /tmp # installpkg mplayer-svn_r27865-i486-2_SBo.tgz # mv mplayer-svn_r27865-i486-2_SBo.tgz /newpkg/
安装浏览器插件mplayerplug(可选)。
脚本和软件包同样从slackbuilds.org及相关链接获得:
# cd /sources # tar xzvf mplayerplug-in.tar.gz # cd mplayerplug-in/ # cp /pub/software/mplayer/mplayerplug-in-3.55.tar.gz . # ./mplayerplug-in.SlackBuild # cd /tmp # installpkg mplayerplug-in-3.55-i486-1_SBo.tgz # mv mplayerplug-in-3.55-i486-1_SBo.tgz /newpkg/
3.3 安装AdobeReader
从http://www.adobe.com获得二进制安装包AdobeReader_chs-8.1.3-1.i486.tar.bz2。
从slackbuilds.org获得编译脚本acroread.tar.gz。
# cd /sources # tar xzvf acroread.tar.gz # cd acroread/ # cp /.../AdobeReader/AdobeReader_chs-8.1.3-1.i486.tar.bz2 .
调整脚本:
# cp acroread.SlackBuild acroread.SlackBuild-bak # vi acroread.SlackBuild # diff acroread.SlackBuild acroread.SlackBuild-bak 41c41 < ADOBE_LANG=${ADOBE_LANG:-chs} --- > ADOBE_LANG=${ADOBE_LANG:-enu}
制作安装:
# ./acroread.SlackBuild # cd /tmp # installpkg acroread-8.1.3_chs-i486-1_SBo.tgz # mv acroread-8.1.3_chs-i486-1_SBo.tgz /newpkg/
3.4 安装Adobe flash-player-plugin
从http://www.adobe.com获得二进制安装包install_flash_player_10_linux.tar.gz。
从slackbuilds.org获得编译脚本flash-player-plugin.tar.gz。
# cd /sources # tar xzvf flash-player-plugin.tar.gz # cd flash-player-plugin/ # cp /pub/downloads/install_flash_player_10_linux.tar.gz . # ./flash-player-plugin.SlackBuild # cd /tmp # installpkg flash-player-plugin-10.0_r12-i386-1_SBo.tgz # mv flash-player-plugin-10.0_r12-i386-1_SBo.tgz /newpkg/
3.5 安装Texlive2008
安装:
# mount -o loop texlive2008-20080822.iso /mnt # cd /mnt # ./install-tl
采用缺省方式,完全安装。
这里不进行配置,而是留给需要的用户进行。
3.6 安装VMware(amd64机器)
从VMware官方网站www.vmware.com获得软件包VMware-Workstation-6.5.0-118166.i386.bundle。
安装:
# sh VMware-Workstation-6.5.0-118166.i386.bundle # cd /etc/rc.d/rc4.d # ln -s ../init.d/vmware S19vmware # ln -s ../init.d/vmware K08vmware
以root运行“Virtual Network Editor”,配置10块虚拟网卡。除vmnet0为桥接外,vmnet1到vmnet9均为host-only。关闭nat和dhcp服务。设置IP地址,以方便物理机和所有虚拟机的交互:
- vmnet0,bridge -> eth0
- vmnet1,host-only,10.10.10.199
- vmnet2,host-only,10.10.20.199
- vmnet3,host-only,172.16.0.199
- vmnet4,host-only,10.20.10.199
- vmnet5,host-only,10.20.20.199
- vmnet6,host-only,172.17.0.199
- vmnet7,host-only,192.168.0.199
- vmnet8,host-only,192.168.1.199
- vmnet9,host-only,172.18.0.199
3.7 安装OpenOffice.org
从OpenOffice.org 中文网站zh.openoffice.org获得二进制安装包OOo_3.0.0rc4_20080930_LinuxIntel_install_zh-CN.tar.gz。
从slackbuilds.org获得编译脚本openoffice.org.tar.gz。
# cd /sources # tar xzvf openoffice.org.tar.gz # cd openoffice.org/ # cp /.../OOo_3.0.0rc4_20080930_LinuxIntel_install_zh-CN.tar.gz .
调整脚本:
# cp openoffice.org.SlackBuild openoffice.org.SlackBuild-bak # vi openoffice.org.SlackBuild # diff openoffice.org.SlackBuild openoffice.org.SlackBuild-bak 31c31 < VERSION=3.0.0rc4_20080930 --- > VERSION=3.0.0 48c48 < OOLANG=${OOLANG:-zh-CN} --- > OOLANG=${OOLANG:-en-US} 55c55 < DISABLE_JAVA=${DISABLE_JAVA:-YES} --- > DISABLE_JAVA=${DISABLE_JAVA:-NO}
制作安装:
# ./openoffice.org.SlackBuild # cd /tmp # installpkg openoffice.org-3.0.0rc4_20080930_zh_CN-i586-3_SBo.tgz # mv openoffice.org-3.0.0rc4_20080930_zh_CN-i586-3_SBo.tgz /newpkg
3.8 安装星际译王
从stardict.sourceforge.net获得源代码包stardict-3.0.1.tar.bz2。
从slackbuilds.org获得编译脚本stardict.tar.gz。
# cd /sources # tar xzvf stardict.tar.gz # cd stardict # cp /pub/downloads/stardict-3.0.1.tar.bz2 . # ./stardict.SlackBuild # cd /tmp # installpkg stardict-3.0.1-i486-1_SBo.tgz # mv stardict-3.0.1-i486-1_SBo.tgz /newpkg
4 网络服务
4.1 配置ftp服务
编辑/etc/vsftpd.conf,允许普通用户有写权限:
write_enable=YES
编辑/etc/inetd.conf, 打开vsftp,取消其他所有服务。
允许执行rc.inetd:
# cd /etc/rc.d # chmod a+x rc.inetd
启动inetd:
# /etc/rc.d/rc.inetd start
编辑防火墙脚本/etc/rc.d/rc.iptables,允许ftp:
iptables -A INPUT -p tcp --dport ftp -m state --state NEW -j ACCEPT
4.2 配置http服务
允许执行rc.httpd:
# cd /etc/rc.d # chmod a+x rc.httpd
启动httpd:
# /etc/rc.d/rc.httpd start
编辑防火墙脚本/etc/rc.d/rc.iptables,允许httpd:
iptables -A INPUT -p tcp --dport http -m state --state NEW -j ACCEPT
如果启用ssl,则还要打开https端口:
iptables -A INPUT -p tcp --dport https -m state --state NEW -j ACCEPT
关于apache的ssl配置,可参阅附录 A。
5 普通用户
5.1 设置locale
编辑.profile,增加:
export LANG=zh_CN.UTF-8
5.2 配置scim(kde)
让scim随kde自动启动:
$ cd $HOME/.kde/Autostart
创建一个脚本scim.sh,内容:
scim -d
使脚本可执行:
$ chmod +x scim.sh
启动kde,在scim的全局设置中,将键盘设置为en_US;只使用智能拼音输入法。
5.3 配置KDE
将语言设置为简体中文,并根据个人喜好设置面板,背景等。
5.4 配置Konsole
设置字体:DejaVu Sans Mono,bold,12。
大小:80X25。
方案:Linux颜色。
5.5 配置Terminal
设置字体:DejaVu Sans Mono,bold,12。
取消“允许粗体字”。
颜色设置为白底黑字。
选择将命令作为login shell执行。
5.6 配置Firefox
从“Tools“菜单选择“add-ons“,安装DownThemAll插件。
从旧系统中导入书签。
5.7 配置Texlive2008
编辑.profile,添加:
export PATH=/usr/local/texlive/2008/bin/i386-linux:$PATH export MANPATH=/usr/local/texlive/2008/texmf/doc/man:$MANPATH export INFOPATH=/usr/local/texlive/2008/texmf/doc/info:$INFOPATH
附录 A
A.1 在apache中启用ssl
编辑/etc/httpd.conf,打开如下设置(取消注释):
LoadModule ssl_module lib/httpd/modules/mod_ssl.so Include /etc/httpd/extra/httpd-ssl.conf
接下来还需要创建服务器证书。
A.2 创建自签名的服务器证书
可以简单的创建一个自签名的证书用于测试:
# cd /etc/httpd/ # openssl req -new -x509 -nodes -out server.crt -keyout server.key
当然,这种证书是没法获得信任的。在正式场合,需要获得CA认证的证书。
A.3 创建CA认证的服务器证书
首先,生成服务器私钥:
# cd /etc/httpd/ # openssl genrsa -des3 -out server.key.org 1024 Generating RSA private key, 1024 bit long modulus ................................................................................ .............++++++ ...............++++++ e is 65537 (0x10001) Enter pass phrase for server.key.org: Verifying - Enter pass phrase for server.key.org:
按提示输入pass phrase,即用来保护私钥的密码。
生成证书请求文件(输入信息是虚构的):
# openssl req -new -key server.key.org -out server.csr Enter pass phrase for server.key.org: You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:CN State or Province Name (full name) [Some-State]:Yunnan Locality Name (eg, city) []:Kunming Organization Name (eg, company) [Internet Widgits Pty Ltd]:Yunnan University Organizational Unit Name (eg, section) []:Computer Science Department Common Name (eg, YOUR name) []:172.31.1.110 Email Address []:admin@copyleft.net Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:
按提示输入相关信息,最重要的是“Common Name”,为主机的全称,如www.copyleft.net。这里没有域名,使用IP地址代替。
接下来,把server.csr送到证书颁发机构CA,获得签名后的证书server.crt。
最后,去除私钥的保护密码,因为不想在每次apache启动时都输入pass phrase密码:
# openssl rsa -in server.key.org -out server.key Enter pass phrase for server.key.org: writing RSA key
A.4 创建CA
把证书送交正式的CA进行签名,需要不小的费用。在非正式场合,可以创建自己的CA机构,为各个证书签名,形成自己的证书链。
一些准备工作:
# cd /etc/httpd/ # mkdir demoCA # mkdir demoCA/private # mkdir demoCA/newcerts # cd demoCA # touch index.txt # echo "01" > serial
创建CA私钥和证书(输入信息是虚构的):
# openssl req -new -x509 -keyout private/cakey.pem -out cacert.pem Generating a 1024 bit RSA private key .++++++ ................++++++ writing new private key to 'private/cakey.pem' Enter PEM pass phrase: Verifying - Enter PEM pass phrase: ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:CN State or Province Name (full name) [Some-State]:Yunnan Locality Name (eg, city) []:Kunming Organization Name (eg, company) [Internet Widgits Pty Ltd]:Yunnan University Organizational Unit Name (eg, section) []:Information School Common Name (eg, YOUR name) []:duangw Email Address []:admin@cs.ynu.edu.cn
A.5 使用CA进行签名
对服务器的请求证书进行签名:
# cd /etc/httpd/ # openssl ca -in server.csr -out server.crt Using configuration from /etc/ssl/openssl.cnf Enter pass phrase for ./demoCA/private/cakey.pem: Check that the request matches the signature Signature ok Certificate Details: Serial Number: 1 (0x1) Validity Not Before: May 7 01:30:00 2009 GMT Not After : May 7 01:30:00 2010 GMT Subject: countryName = CN stateOrProvinceName = Yunnan organizationName = Yunnan University organizationalUnitName = Computer Science Department commonName = 172.31.1.110 emailAddress = admin@copyleft.net X509v3 extensions: X509v3 Basic Constraints: CA:FALSE Netscape Comment: OpenSSL Generated Certificate X509v3 Subject Key Identifier: 2A:C1:10:58:B7:87:5B:29:D6:D4:FA:0D:56:62:58:94:C5:83:60:1D X509v3 Authority Key Identifier: keyid:54:8B:55:BD:B7:7B:55:35:27:55:CF:CF:0B:37:A8:6D:D2:71:63:54 Certificate is to be certified until May 7 01:30:00 2010 GMT (365 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated
A.6 在客户端安装CA根证书
由于CA是自建的,客户端(如浏览器)中没有相关的证书信息,所以还需要在客户端导入CA根证书,整个证书链才算是完备的。
对于IE,在“Internet 选项“->“内容”->“证书”,“导入”文件cacert.pem,放到“受信任的根证书颁发机构“存储区。
对于Firefox,在“Preferences“->“Advanced”->“View Certificates”->“Authorities”,“Import”文件cacert.pem。
A.7 使用个人证书
之前的设置都是针对服务器认证的,更进一步,还可以使用个人证书(客户端证书),来证明自己的身份。
证书的生成方法基本类似。首先生成私钥:
# cd /etc/httpd/ # mkdir client # cd client # openssl genrsa -des3 -out client.key 1024 Generating RSA private key, 1024 bit long modulus ................................................................................ ..................++++++ .....++++++ e is 65537 (0x10001) Enter pass phrase for client.key: Verifying - Enter pass phrase for client.key:
生成证书请求文件(输入信息是虚构的):
# openssl req -new -key client.key -out client.csr Enter pass phrase for client.key: You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:CN State or Province Name (full name) [Some-State]:Yunnan Locality Name (eg, city) []:Kunming Organization Name (eg, company) [Internet Widgits Pty Ltd]:Yunnan University Organizational Unit Name (eg, section) []:Computer Science Department Common Name (eg, YOUR name) []:client Email Address []:client@cs.ynu.edu.cn Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:
使用CA进行签名:
# cd /etc/httpd/ # openssl ca -in client/client.csr -out client/client.crt Using configuration from /etc/ssl/openssl.cnf Enter pass phrase for ./demoCA/private/cakey.pem: Check that the request matches the signature Signature ok Certificate Details: Serial Number: 2 (0x2) Validity Not Before: May 7 01:53:00 2009 GMT Not After : May 7 01:53:00 2010 GMT Subject: countryName = CN stateOrProvinceName = Yunnan organizationName = Yunnan University organizationalUnitName = Computer Science Department commonName = client emailAddress = client@cs.ynu.edu.cn X509v3 extensions: X509v3 Basic Constraints: CA:FALSE Netscape Comment: OpenSSL Generated Certificate X509v3 Subject Key Identifier: CD:8B:27:9F:69:BA:76:E6:F6:49:BB:98:BF:D1:94:AF:A8:07:B4:0F X509v3 Authority Key Identifier: keyid:54:8B:55:BD:B7:7B:55:35:27:55:CF:CF:0B:37:A8:6D:D2:71:63:54 Certificate is to be certified until May 7 01:53:00 2010 GMT (365 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated
生成个人证书:
# openssl pkcs12 -export -clcerts -in client/client.crt -inkey client/client.key -out client/client.p12 Enter pass phrase for client/client.key: Enter Export Password: Verifying - Enter Export Password:
这里需要一个输出(export)密码,在客户端安装时用到。
对于IE,在“Internet 选项“->“内容”->“证书”->“个人”,“导入”文件client.p12,输入export密码,放到“个人“存储区。
对于Firefox,在“Preferences“->“Advanced”->“View Certificates”->“Your Certificates”,“Import”文件client.p12,输入export密码。
A.8 个人证书的服务器端配置
编辑/etc/httpd/extra/httpd-ssl.conf,打开:
SSLVerifyClient require SSLVerifyDepth 10 SSLCACertificateFile "/etc/httpd/demoCA/cacert.pem"