Hi Kevin!

I tried this code and got following exception

Error: keytool error: java.io.IOException: Keystore was tampered with, or
password was incorrect
java.io.IOException: Keystore was tampered with, or password was incorrect
at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:772)
at sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:55)


I regenerated password for key store and replaced
*trustStore.load(stream, "wrong".toCharArray())*
to
*trustStore.load(stream, "changeit".toCharArray())*

but still it's not working.

On Wed, Jul 8, 2015 at 1:46 AM, Kevin Minder <[email protected]>
wrote:

>  Take a look at this below.  This is a bit of a mod of an existing sample
> I had laying around so don’t take it as tested.
>
> import org.apache.http.HttpEntity;
> import org.apache.http.auth.AuthScope;
> import org.apache.http.auth.UsernamePasswordCredentials;
> import org.apache.http.client.CredentialsProvider;
> import org.apache.http.client.methods.CloseableHttpResponse;
> import org.apache.http.client.methods.HttpGet;
> import org.apache.http.client.protocol.HttpClientContext;
> import org.apache.http.conn.ssl.AllowAllHostnameVerifier;
> import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
> import org.apache.http.conn.ssl.SSLContexts;
> import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
> import org.apache.http.impl.client.BasicCredentialsProvider;
> import org.apache.http.impl.client.CloseableHttpClient;
> import org.apache.http.impl.client.HttpClients;
> import org.apache.http.util.EntityUtils;
>
> import javax.net.ssl.SSLContext;
> import java.io.File;
> import java.io.FileInputStream;
> import java.security.KeyStore;
>
> public class HttpClientSslTest {
>
>   public static void main( String[] args ) throws Exception {
>
>     KeyStore trustStore = KeyStore.getInstance( KeyStore.getDefaultType() );
>     FileInputStream stream = new FileInputStream( new File( "gateway.jks" ) );
>     trustStore.load( stream, "wrong".toCharArray() );
>     stream.close();
>
>     SSLContext sslContext = SSLContexts.custom()
>         .loadTrustMaterial( trustStore, *new TrustSelfSignedStrategy()* ) // 
> *** Trust self signed certs. ***
>         .build();
>     SSLConnectionSocketFactory sslFactory = new SSLConnectionSocketFactory( 
> sslContext );
>
>     CloseableHttpClient client = HttpClients.custom()
>         .setSSLSocketFactory( sslFactory )
>         .setHostnameVerifier( *new AllowAllHostnameVerifier()* ) // *** Trust 
> all host names. ***
>         .build();
>
>     HttpClientContext cliContext = HttpClientContext.create();
>     CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
>     credentialsProvider.setCredentials(
>         new AuthScope( AuthScope.ANY_HOST, AuthScope.ANY_PORT ),
>         new UsernamePasswordCredentials( "guest", "guest-password" ) );
>     cliContext.setCredentialsProvider( credentialsProvider );
>
>     HttpGet method = new HttpGet( 
> "https://localhost:8443/gateway/sandbox/webhdfs/v1?op=GETHOMEDIRECTORY"; );
>     CloseableHttpResponse response = client.execute( method, cliContext );
>     HttpEntity entity = response.getEntity();
>     System.out.println( EntityUtils.toString( entity ) );
>
>     response.close();
>     client.close();
>   }
>
> }
>
>
>   From: Hafiz Mujadid <[email protected]>
> Reply-To: "[email protected]" <[email protected]>
> Date: Tuesday, July 7, 2015 at 4:05 PM
> To: "[email protected]" <[email protected]>
> Subject: Re: Apache Knox Web API
>
>   Hi larry!
>
>  As suggested by you, I tried to use knox rest api using Apache HttpClient
>
> here is my code
>
>  val provider = new BasicCredentialsProvider()
>     val credentials = new UsernamePasswordCredentials("admin", "12345")
>     provider.setCredentials(AuthScope.ANY, credentials)
>     val client =
> HttpClientBuilder.create().setDefaultCredentialsProvider(provider) .build()
>     val response = client.execute(new HttpGet("
> https://localhost:8443/gateway/sample/webhdfs/v1?op=LISTSTATUS";))
>     val statusCode = response.getStatusLine.getStatusCode
>     val input = response.getEntity().getContent()
>     if (statusCode == HttpStatus.SC_OK)
>       println("ok")
>
>
>  but I am getting following SSL related exception.
>
>
>  Exception in thread "main" javax.net.ssl.SSLHandshakeException:
> sun.security.validator.ValidatorException: PKIX path building failed:
> sun.security.provider.certpath.SunCertPathBuilderException: unable to find
> valid certification path to requested target
> at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
> at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1904)
>
>  Any suggestion?
>
>
> On Mon, Jul 6, 2015 at 10:34 PM, Hafiz Mujadid <[email protected]>
> wrote:
>
>> thanks for your help .:)
>>
>> On Mon, Jul 6, 2015 at 10:05 PM, larry mccay <[email protected]>
>> wrote:
>>
>>> As I mentioned, you can dig into the source of the gateway-shell classes
>>> - which are used when scripting with groovy.
>>> Here is a link to an hdfs Get request:
>>> https://github.com/apache/knox/blob/master/gateway-shell/src/main/java/org/apache/hadoop/gateway/shell/hdfs/Get.java#L32
>>>
>>>  Going to the HttpClient level is like going to bare metal - it
>>> provides you greatest level of control but you will need to build
>>> abstractions around its use in order to avoid lots of redundant boilerplate
>>> code. Which is why we have provided such classes for the scripting.
>>>
>>>  You can also look at the DefaultDispatch code as an example - it is a
>>> bit more complicated since it covers more general usecases but you may
>>> glean some insights from it.
>>>
>>>  Otherwise, google for examples of "Apache HttpClient REST basic
>>> authentication" and see what you find.
>>>
>>>  Hope this is useful for you!
>>>
>>>
>>> On Sun, Jul 5, 2015 at 11:40 AM, Hafiz Mujadid <[email protected]
>>> > wrote:
>>>
>>>>  Hi Larry!
>>>>
>>>>  Can you provide the link to samples using httclient on github etc.?
>>>>
>>>>  Thanks
>>>>
>>>> On Sat, Jul 4, 2015 at 9:40 PM, larry mccay <[email protected]>
>>>> wrote:
>>>>
>>>>> Then you will want to consider the Client library from the first link.
>>>>> You can look in the {GATEWAY_HOME}/samples directory for examples of
>>>>> it's use.
>>>>> The groovy scripts are a great way to do it or you can use the
>>>>> underlying java classes that groovy uses.
>>>>> The latter will require you to dig into the source a bit more to see
>>>>> how to use them.
>>>>>
>>>>>  You can also use Apache HttpClient and there are samples of that as
>>>>> well.
>>>>>
>>>>> On Sat, Jul 4, 2015 at 12:04 PM, Aneela Saleem <[email protected]
>>>>> > wrote:
>>>>>
>>>>>> Thanks Larry.
>>>>>>
>>>>>>  Actually  I need some client API like java so that I authenticate /
>>>>>> authorize my users programmatically through Knox.
>>>>>>
>>>>>> On Sat, Jul 4, 2015 at 8:50 PM, larry mccay <[email protected]>
>>>>>> wrote:
>>>>>>
>>>>>>> Hi Aneela -
>>>>>>>
>>>>>>>  I assume that you mean that you would like to add support for a
>>>>>>> Hadoop API that Knox currently lacks.
>>>>>>> My suggestion is that you find one that your organization or your
>>>>>>> personal interests require.
>>>>>>>
>>>>>>>  There are lots of Jira's filed for bug fixes and other
>>>>>>> features/enhancements as well.
>>>>>>>
>>>>>>>  Feel free to start a discussion regarding any contribution that
>>>>>>> you would like to make.
>>>>>>>
>>>>>>>  As far as the links that you referenced:
>>>>>>>
>>>>>>>  1. The first is a client library for scripting interactions with
>>>>>>> Hadoop services through Knox - there are some really interesting and
>>>>>>> powerful capabilities there.
>>>>>>> 2. The second is actually pointing to a section the dev guide that
>>>>>>> needs to be completed. We have what we call Gateway Services in the 
>>>>>>> kernel
>>>>>>> of the Knox server that provide implementations for core server 
>>>>>>> interfaces
>>>>>>> - crypto, SSL, credential aliasing, etc. I don't think that you want to
>>>>>>> work in that space. If you want to work on adding new API support for
>>>>>>> services then you should refer to the Services section -
>>>>>>> https://knox.apache.org/books/knox-0-6-0/dev-guide.html#Services.
>>>>>>>
>>>>>>>  Note that the link that I provided above is for the 0.6.0 dev
>>>>>>> guide. There is a new configuration driven way to add API support to 
>>>>>>> Knox
>>>>>>> that was added in the 0.6.0 release.
>>>>>>>
>>>>>>>  Thanks for your interest in contributing to Apache Knox!
>>>>>>>
>>>>>>>  --larry
>>>>>>>
>>>>>>>
>>>>>>> On Sat, Jul 4, 2015 at 10:56 AM, Aneela Saleem <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>>> Hi Everyone,
>>>>>>>>
>>>>>>>>  I'm going to start development for Hadoop security through Apache
>>>>>>>> Knox. Can anyone please suggest me some good API for Knox.
>>>>>>>>
>>>>>>>>  So far i have found following:
>>>>>>>>
>>>>>>>>  https://cwiki.apache.org/confluence/display/KNOX/Client+Usage
>>>>>>>>
>>>>>>>>
>>>>>>>> https://knox.apache.org/books/knox-0-5-0/dev-guide.html#Gateway+Services
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>>
>>>>  --
>>>> Regards: HAFIZ MUJADID
>>>>
>>>
>>>
>>
>>
>>   --
>> Regards: HAFIZ MUJADID
>>
>
>
>
>  --
> Regards: HAFIZ MUJADID
>



-- 
Regards: HAFIZ MUJADID

Reply via email to