<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Extreme Pattern: Mylar Connector with SSL Client Certificate</title>
    <link>http://blog.extremepattern.com/articles/2007/01/08/mylar-connector-with-ssl-client-certificate</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>enjoy</description>
    <item>
      <title>Mylar Connector with SSL Client Certificate</title>
      <description>&lt;h3&gt;源起&lt;/h3&gt;


	&lt;p&gt;mylay 的連接器目前沒有提供 &lt;span class="caps"&gt;SSL&lt;/span&gt; Client Certificate 設定，
需要在 eclipse 上面作些設定，同時改一下 mylar 的程式。&lt;/p&gt;


	&lt;h3&gt;參考&lt;/h3&gt;


	&lt;ol&gt;
	&lt;li&gt;&lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=151077"&gt;Add support for &lt;span class="caps"&gt;HTTP&lt;/span&gt; Digest authentication to Trac connector&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://maven.apache.org/guides/mini/guide-repository-ssl.html"&gt;Guide to Remote repository access through authenticated &lt;span class="caps"&gt;HTTPS&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://www-128.ibm.com/developerworks/tw/library/j-customssl/"&gt;為高級 &lt;span class="caps"&gt;JSSE&lt;/span&gt; 開發人員定制 &lt;span class="caps"&gt;SSL&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
	&lt;/ol&gt;


	&lt;h3&gt;eclipse.ini&lt;/h3&gt;


	&lt;p&gt;目前要改 mylar ui 會需要動比較多，所以這裡用 system property 直接穿
進去用。&lt;/p&gt;


	&lt;p&gt;改這個 ini 檔的時候，注意不要多出空白等資料，不然會讀不進去，可以
開起來後，用 Help-About-Configuration Details 看看。&lt;/p&gt;


&lt;pre&gt;
-vmargs
-Xms512m
-Xmx512m
-XX:PermSize=128m
-XX:MaxPermSize=128m
-Dfile.encoding=UTF-8
-Dmylar.trustStore=trust.jks
-Dmylar.keyStore=haha.pfx
-Dmylar.trustStorePassword="trustpass" 
-Dmylar.keyStorePassword="hahapass" 
&lt;/pre&gt;

	&lt;h3&gt;org.eclipse.mylar.tasks.core.web.WebClientUtil.SslClientAuthProtocolSocketFactory&lt;/h3&gt;


	&lt;p&gt;只是改一下 SslProtocolSocketFactory.java&lt;/p&gt;


&lt;pre&gt;
private String trustStore = 
  System.getProperty("mylar.trustStore");
private String trustStorePassword = 
  System.getProperty("mylar.trustStorePassword");
private String keyStore = 
  System.getProperty("mylar.keyStore");
private String keyStorePassword = 
  System.getProperty("mylar.keyStorePassword");

protected KeyManager[] getKeyManagers() {...}
protected TrustManager[] getTrustManagers(){...} 
private SSLContext getSslContext() {
    if (sslContext == null) {
    try {
        TrustManager[] tms = getTrustManagers();
        KeyManager[] kms = getKeyManagers();
        sslContext = SSLContext.getInstance("SSL");
        sslContext.init(kms, tms, null);
        } catch (Exception e) {
            MylarStatusHandler.log(e, "could not get SSL context");
        }
    }
    return sslContext;
}
&lt;/pre&gt;

	&lt;h3&gt;org.eclipse.mylar.tasks.core.web.WebClientUtil&lt;/h3&gt;


	&lt;p&gt;再改個 setupHttpClient() 中使用的的部份就可以。&lt;/p&gt;


&lt;pre&gt;
Protocol acceptAllSsl = new Protocol("https", 
  new SslClientAuthProtocolSocketFactory(proxySettings),
  WebClientUtil.getPort(repositoryUrl));
&lt;/pre&gt;        

	&lt;h3&gt;觀察&lt;/h3&gt;


	&lt;ol&gt;
	&lt;li&gt;mylar 過不久應該會有 ui 介面可用，現在這樣可以先撐著用。&lt;/li&gt;
	&lt;/ol&gt;</description>
      <pubDate>Mon, 08 Jan 2007 03:43:00 -0800</pubDate>
      <guid isPermaLink="false">urn:uuid:cae945b6-5bef-497f-9190-4a8b37cb5c20</guid>
      <author>LIN</author>
      <link>http://blog.extremepattern.com/articles/2007/01/08/mylar-connector-with-ssl-client-certificate</link>
      <category>java</category>
    </item>
  </channel>
</rss>

