The part of the stack trace for the exception:

Defective credential detected.
Caused by org.globus.gsi.proxy.ProxyPathValidatorException:
"/O=Grid/OU=GlobusTest/OU=simpleCA-mydomain.internet/OU=internet/CN=Soyuz"
violates the signing policy defined for CA
"/O=Grid/OU=GlobusTest/OU=simpleCA-soyuz-laptop.mydomain.internet/CN=Globus
Simple CA" in file
"/usr/local/globus-4.2.1.1/share/certificates/577f8148.signing_policy"

        at 
org.globus.gsi.proxy.ProxyPathValidator.checkSigningPolicy(ProxyPathValidator.java:968)
        at 
org.globus.gsi.proxy.ProxyPathValidator.validate(ProxyPathValidator.java:555)
        at 
org.globus.gsi.proxy.ProxyPathValidator.validate(ProxyPathValidator.java:354)
        at 
org.globus.gsi.gssapi.GlobusGSSContextImpl$GSSProxyPathValidator.validate(GlobusGSSContextImpl.java:679)
        at 
org.globus.gsi.gssapi.GlobusGSSContextImpl.verifyChain(GlobusGSSContextImpl.java:715)
        at 
org.globus.gsi.gssapi.GlobusGSSContextImpl.acceptSecContext(GlobusGSSContextImpl.java:314)


Also, my JGlobus version is cog-jglobus 1.6.0

---------- Forwarded message ----------
From: Mohammad Bhuyan <[EMAIL PROTECTED]>
Date: Tue, Nov 18, 2008 at 11:30 PM
Subject: Development related issue: JGlobus, GSSAPI/GSI & Java
To: [email protected]


Hi All,

While trying to develop a GridFTP server using Java I am stuck with a
GSSAPI/GSI related issue. I have the basic knowledge about the
Security and PKI concepts.

As per the RFC 2228, during the ADAT exchange, my GridFTP server code
is generating the following exception:

Defective credential detected.
Caused by org.globus.gsi.proxy.ProxyPathValidatorException:
"/O=Grid/OU=GlobusTest/OU=simpleCA-mydomain.internet/OU=internet/CN=Soyuz"
violates the signing policy defined for CA
"/O=Grid/OU=GlobusTest/OU=simpleCA-soyuz-laptop.mydomain.internet/CN=Globus
Simple CA" in file
"/usr/local/globus-4.2.1.1/share/certificates/577f8148.signing_policy"

Before providing the code snippets, let me present the setup/environment I have:

1. Everything (Server,Client) is hosted on a single box (Ubuntu Linux)
with no static IP. But I have configured the FQDN for the box (using
hosts) to be "soyuz-laptop.mydomin.internet (127.0.1.1)

2. Installed Globus Toolkit 4.2.1 as Globus user (as per Globus
documentation). Later I have realised that I could do away without
installing to whole globus.

3. Installed simpleCA: cn=Globus Simple CA,
ou=simpleCA-soyuz-laptop.mydomain.internet, ou=GlobusTest, o=Grid
   GSI Security was configured successfully (Trusted Certs Dir:
/usr/local/globus-4.2.1.1//share/certificates/ )

   Following certificates were issued, signed and installed:

   Host certificate:
/O=Grid/OU=GlobusTest/OU=simpleCA-mydomain.internet/CN=host/soyuz-laptop.mydomain.internet
   User certificate:
/O=Grid/OU=GlobusTest/OU=simpleCA-mydomain.internet/OU=internet/CN=Soyuz
   Note that this is the user that I use to develop/run code.

4. Installed JGlobus with pointing to user certificate path for Soyuz
and CA cert path: /usr/local/globus-4.2.1.1//share/certificates/

Now, coming to the code snippets:

The GridFTP client I am using can be obtained from http://bi.offis.de/gridftp/

For the server: Using the guideline provided in Appendix I
(Specification under the GSSAPI) of RFC 2228

During the server initialisation I do the following:

                       GSSManager manager = new GlobusGSSManagerImpl();
                       ExtendedGSSContext context =
(ExtendedGSSContext)manager.createContext((GSSCredential)null);
                       _gssContext = context; //Save the context for later use

And, in my ADAT command handler, I have:

                      GSSContext gssCntx =
sessionObj.SecurityService().gsiContecxt();
                      byte[] replyToken = null;
                      try {
                             replyToken =
gssCntx.acceptSecContext(adatData, 0, adatData.length);
                             //where adatData is token carried by ADAT
command (+
decoded from Base64 encoding)
                      } catch (Throwable e ){
                            System.out.println("Context Exception.");
                            e.printStackTrace();
                      }


While I need to move past the exception and see the context
established, I had thought that the server should be using the host
certificate (which has not been used in this scenario) as its
credential.

Finally, thanks for your patience!

Any help appreciated. I am in desperate need of a way forward.

Regards,

Mohammad


Mohammad Bhuyan
+61 4 13324850

Reply via email to