自己记录点东西用。
分类: LINUX
2009-05-01 19:47:54
使用GridFTP编程进行传输过程中用到的认证等级相对较高,本文为以前写的日志,若刚开始做这方面,是非常郁闷的。有在传输方面进行研究的或者需要对认证进行完全配置的,可Q索要:552043106,数据传输方面仍有许多不理解的,方便以后共同交流、学习。
四 user证书
用户也需要申请用户证书。我的机器上添加了zm用户。
1.以zm身份执行下面的命令:
grid-cert-request
提示输入密码后,将创建下面的文件:
~$USER/.globus/usercert.pem(空文件)
~$USER/.globus/userkey.pem
~$USER/.globus/usercert_request.pem
将usercert_request.pem发给SimpleCA服务器的管理员等待认证,这里因为在本机上安装了自己的CA服务器,可以在本机上进行认证。
2.在CA服务器上,以globus身份执行下面的命令:
grid-ca-sign –in usercert_request.pem –out signed.pem
出现错误权限,则将/home/guser授权给globus后切换到/home/guser/.globus目录下进行,完毕后需要重新改变回原来的权限
将得到的signed.pem拷贝到上面提到的/home/zm/.globus/usercert.pem。
下面,我们看看,是不是子节点上本来已经有两套证书了。
[root@xx2 grid-security]# ls -la *pem
-rw-r--r-- 1 globus globus 2632 Jul 1 23:45 containercert.pem
-r-------- 1 globus globus 887 Jul 1 23:45 containerkey.pem
-rw-r--r-- 1 root root 2632 Jul 9 09:15 hostcert.pem
-rw-r--r-- 1 root root 1377 Jul 9 08:48 hostcert_request.pem
-r-------- 1 root root 887 Jul 9 08:48 hostkey.pem
对着呢。所以,我们往下走,既然xx2.com(boy)已经有了主机和容器的证书,并且也信任了我们的网格CA,最后一步就是要让xx2.com
信任我在主机xx1.com上的用户zx。因为只有这样的话,我才能用zx用户在xx1.com上调度xx2.com的资源或者命令。
以防大家弄错,我先在xx2.com上新建一个zhangxiao用户,他对应xx1.com上的zx用户,代表zx在xx2.com上执行命令。这个问题
其实很好理解,zx用户对于xx2.com来说是没有意义的,因为xx2.com这台电脑,没有也不知道zx这个用户。所以zx@xx1.com提交的作业
,必须有相应的本地用户来执行。
当大家看明白了上面的那段话,你也可以把zx映射到相依的其它用户,动脑筋稍加修改就可以了。
那么,我们把zx@xx1.com所有的证书拷贝给zhangxiao@xx2.com,然后让在xx2.com上生成认证。
那么,我们把guser@xys.com所有的证书拷贝给root@boy.com,然后让在boy.com上生成认证。
保证切换到相应的目录
[root@xys .globus]# pwd
/home/guser/.globus
总共三个文件
[root@xys .globus]# ls
usercert.pem usercert_request.pem userkey.pem
拷贝过去
[root@xys .globus]# scp *.pem guser@boy.com/home/guser/.globus
在boy.com上面
[root@boy .globus]# pwd
/home/guser/.globus
它们三个已经拷贝过来了。
[root@boy .globus]# ls -la *pem
-rw-r--r-- 1 guser guser 2635 Jul 9 10:04 usercert.pem
-rw-r--r-- 1 guser guser 1376 Jul 9 10:04 usercert_request.pem
-r-------- 1 guser guser 963 Jul 9 10:04 userkey.pem
哈哈,接下来我让xx2.com对zx对应的zhangxiao用户进行认证
[zhangxiao@xx2 ~]$ grid-proxy-init -verify -debug
User Cert File: /home/zhangxiao/.globus/usercert.pem
User Key File: /home/zhangxiao/.globus/userkey.pem
Trusted CA Cert Dir: /etc/grid-security/certificates
Output File: /tmp/x509up_u503
Your identity: /O=Grid/OU=GlobusTest/OU=simpleCA-xx1.com/OU=com/CN=zx
Enter GRID pass phrase for this identity:
Creating proxy .........................++++++++++++
...........++++++++++++
Done
Proxy Verify OK
Your proxy is valid until: Mon Jul 9 22:08:44 2007
/*******************************************************************************
奇怪的是这里总是出现错误,我以globus用户安装globus,然后以root配置simpleCA,最后以guser用户作为代理使用。在命令行下通过guser可以完成文件的传输及GRAM等各项操作。就是我以guser申请usercert运行grid-proxy-init正确,但是运行grid-proxy-init -verify -debug总是出现认证错误,只能以root用户申请证书,验证运行才能成功,可能对应的root用户下的simpleCA在root下运行时正好成功,但是我查看发现系统只有一个simpleCA,那我就不明白globus用户下()的simpleCA跟root下的simpleCA有什么不一样了,希望高手指教...
*****************************************************************************
怎么?最后一行竟然是24小时之后就过期了,太不爽了。下次还要重新认证吗?
原来是我忘记加参数了。这次加上参数让它10000小时0秒后过期
[zhangxiao@xx2 ~]$ grid-proxy-init -verify -debug -valid 10000:0
Warning: your certificate and proxy will expire Fri Jul 4 11:20:07 2008
which is within the requested lifetime of the proxy
嘿嘿,08年才过期呢。
首先,我们要让xx2.com的容器生成证书。
[root@xx2 grid-security]# vi grid-mapfile
[root@xx2 grid-security]# cat grid-mapfile
"/O=Grid/OU=GlobusTest/OU=simpleCA-xx1.com/OU=com/CN=zx" zhangxiao
切换到zhangxiao@xx2.com,我们拷贝一个文件看看
[zhangxiao@xx2 ~]$ globus-url-copy gsiftp://xx2.com/tmp/ gsiftp://xx1.com/tmp/
我们在xx1.com上看看文件属主,果真是zx,这就又验证了zhangxiao@xx2.com是zx@xx1.com的代理映射。
[root@xx1 tmp]# ls -la
-rw-r--r-- 1 zx zx 644 07-09 10:17
那么反向能不能成立啊?我们来试试。
[zx@xx1 tmp]$ globus-url-copy gsiftp://xx1.com/tmp/mytest gsiftp://xx2.com/tmp/form.xx1
[root@xx2 ~]# ls /tmp/form.xx1 -la
-rw-r--r-- 1 zhangxiao zhangxiao 337 Jul 9 10:30 /tmp/form.xx1
果真是zhangxiao的属主。
本文的一部分是转载网上的文章,但是添加了一些内容,让我改的也是乱七八糟,希望中间的某个部分对你们有用!