Duangw

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地址等参数。

如果修改别的选项,则还涉及:

 

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地址,以方便物理机和所有虚拟机的交互:

 

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"