如何在Windows Store应用程序中进行TLS/SSL通讯

Windows Store应用程序经常需要使用各种Web服务,为了安全起见,这些服务最好是通过https来访问。那么我们如何在Windows Store应用中使用证书来进行安全的通讯呢,我这里就做一个简单的小结。 首先,如果服务端使用了服务端认证,那么Windows Store应用作为客户端连接服务器的时候,需要验证该服务端证书在客户端是受信任的。那么分两种情况: 一.         如果该证书是被受信任的机构签发的,而且该机构的Root证书已经缺省安装到了客户端,那么,Windows Store应用程序只需要在Package.appxmanifest文件中加入对Shared Uer Certigficates这个Capability的支持,应用程序会自动到系统的Certificate Store中找到该Root证书并通过验证。不过这种方法也有一个问题,由于客户端只验证服务端证书是否来自于同一个Root,所以我们可以很容易的伪造一张服务端证书来通过验证。 二.         如果该证书是一张自签名的证书,那么确实情况下客户端是不会安装这张证书的。那么这时候Windows Store应用程序就无法通过证书的验证。这个问题也好解决,向第一种情况靠拢呗。如果在客户端已经手动安装了这张自签名的证书,那就没问题啦。所以我们需要做的就是将这个自签名的证书从服务端下载下来,然后一台一台的安装到客户端Certificate Store的Root目录下。 可是,这个方法也太不靠谱啦!在很多情况下,我是没有办法将自签名证书一台一台安装到客户端的呀。有没有其他办法呢?有的!我们可以将证书放在Windows Store应用程序中,然后通过Package.appxmanifest的Declarations添加这张证书: 1.       在Available Declarations中选择Certificates,点击Add。 2.       在右边的Trust flags勾选上Exclusive Trust,加上这个以后,就能够保证不是随随便便用一张服务端证书就能够把客户端应用糊弄过去啦。 3.       在右边的Certificates中点击Add New, Store Name需填写Root,Content中添加你所要验证的服务端证书。 4.       在添加以后,该服务端证书会自动添加到你的项目中,我们需要在该证书的文件属性中将Copy to Output Directory改为Copy if newer。 这样,我们就可以很方便的完成服务端验证了,而且也不用担心有人通过伪造服务端证书来截取通讯内容。 接下来我们看一下需要客户端认证的情形。这种情况下,我们需要做两件事: 一.保证客户端已经正确安装了客户端证书。你可以把你的证书文件放在项目中或者远程服务器上。当你的Windows Store应用获得了PKCS12格式的证书数据以后,就可以调用 CertificateEnrollmentManager.UserCertificateEnrollmentManager.ImportPfxDataAsync或者CertificateEnrollmentManager.InstallCertificateAsync来安装该证书。 二.一旦客户端已经正确安装了客户端证书,那么就需要在Windows store应用中获得该证书的实例,这可以通过CertificateStores.FindAllAsync来枚举所有的证书实例,然后找出你所需要的那个,FindAllAsync也支持传入一个CertificateQuery参数来进行筛选。 在获得证书实例之后,我们就可以通过HttpBaseProtocolFilter来设置客户端证书,然后将HttpBaseProtocolFilter作为参数传入HttpClient中实现客户端验证,示例代码如下: var certificates = await CertificateStores.FindAllAsync(); var certificate = certificates.Where(w => w.Subject.Equals(SUBJECTNAME)).FirstOrDefault();…


Lync 2013 常設チャットにファイル添付で Crash

こんばんは、Lync Support のワトソンです。 以下のように、Lync Server 2013 で常設チャットでのファイル添付を禁止する場合がございます。 この場合、Lync 2013 クライアントの常設チャットウインドウでは、 ファイルをアップロードする事はできません。 しかし、こちらのオプションが設定されている場合、以下の動作でファイルをウインドウにドロップする と Lync 2013 がクラッシュしてしまいます。 1. ファイルをドロップ   2. ファイルを送信し、クラッシュ   こちらの問題は Lync 2013 クライアントの問題であり、今後修正の予定となっております。 ファイル添付制限を行う場合、予めユーザー様にお知らせ下さい。 関連 Blog Skype for Business Server 2015 常設チャット Part1 展開の計画https://blogs.msdn.microsoft.com/lync_support_team_blog_japan/2017/08/10/sfbpc_part1/  Skype for Business Server 2015 常設チャット Part2 展開https://blogs.msdn.microsoft.com/lync_support_team_blog_japan/2017/08/10/sfbpc_part2/ Skype for Business Server 2015 常設チャット Part3 アーキテクチャーhttps://blogs.msdn.microsoft.com/lync_support_team_blog_japan/2017/08/10/sfbpc_part3/ Skype for…


System Center Virtual Machine Manager 2012 R2 Compatibility Problems

This article has been written to inform Microsoft customers about compatibility problems between System Center Virtual Machine Manager 2012 R2 and Windows Server 2012 Operating System as the Virtual Machine Manager Server OS. Several bugs and problems has been identified, which will not be fixed between these two products therefore for new deployments and in…


常設チャットをはじめよう(第5回)アドイン編

こんばんは、Lyncサポートの吉野です。 以前「常設チャットをはじめよう」の連載をしたところ、常設チャットの日本での普及率が急上昇しました…。 改めて第1回を確認したい人はこちらから http://blogs.msdn.com/b/lync_support_team_blog_japan/archive/2014/09/16/10556073.aspx というわけでお約束通り少し踏み込んだ使い方ということで、今回はアドインについて説明します。 とはいってもアドインはあまり導入事例もなく、難易度もそれほど高くないのでさらっと紹介します。 http://technet.microsoft.com/ja-JP/library/jj204641.aspx アドインってなに? 常設チャット クライアント内に埋め込むことができるカスタマイズされた Web ページです。あくまで Web ページです。 開発いるの? Web ページなので表示するだけならば不要ですが、 asp や silverlight などで開発すればよりいろいろなことができます。 設定手順は? Lync Server 管理者がアドインを登録します(New-CsPersistentChatAddin)。チャットルーム作成者が利用するアドインを選択します。 では実際にやってみましょう。今回は サイトを表示するだけなので http://www.microsoft.com を指定しています。 せっかくなので管理シェルではなくコントロールパネルからやってみましょう。 1. [常設チャット]->[アドイン]を開きます。ここから[+新規] をクリックします。(このスクショではすでに作られていますが気にしないでください)   2. プールを選択して名前とURLを指定します。これだけです。 3. 保存したら、作成者権限を持つユーザーでチャットルームを作成します。アドインの項目で先ほど作成したアドインを選択します。 4. 作成したチャットルームに入ると、指定したWebページが右側に表示されます。 部門ポータルを挿入したり、 Lync SDK で開発した何かを追加すればいろいろ便利に使えそうです。 次回はアダプターについて解説します。 それでは快適な常設 Lync ライフをご満喫ください。 関連 Blog Skype for Business Server 2015 常設チャット…


Announcing .NET 2015 Preview: A New Era for .NET

Updated (2017): See .NET Framework Releases to learn about newer releases. Updated (July 2015): See Announcing .NET Framework 4.6 to read about the final version of the .NET Framework 4.6. Today is a pivotal moment for .NET. With the release of .NET 2015 Preview, we are embarking on a new journey while maintaining our strong commitment…

70

RoboCup Junior Australia 2014 National Championships

After the successes of the All Saints College teams at the RoboCup Junior Australia 2014 WA State Championships, it went without saying that we would take our best teams to the National Competition in Brisbane on the 27th and 28th September. We ended up taking our Senior Theatre (Pickle JAR Productions) and Senior Dance (The Inspector)…


RoboCup Junior Australia 2014 WA State Championships

It has been a while since my last post. I have been very busy with a number of activities (more on that in a later post). One of those activities has been this year’s RoboCup Junior Australia competition. For the last two years I have been the mentor for the All Saints College Robotics Club. I got involved…


Setkání Windows User Group – říjen 2014

Dva dny nabité přednáškami v podání předních českých odborníků čekají tři města, Prahu, Brno a Bratislavu v rámci letošního ročníku MS Fest 2014. Registrace jsou v plném proudu, neváhejte proto využít šanci načerpat a rozšířit své znalosti zcela zdarma. Těšit se můžete na celou řadu přednášejících, které potkáváte na našich akcích, tak na témata z…


SDK: Creating DDRs on the site server using the client messaging SDK part 2: creating System DDRs

Last year I posted about functionality in the Configuration Manager client messaging SDK to generate DDRs and provided samples on how to create a DDR for a completely custom agent type: a printer. It’s also a common scenario on wanting to generate DDRs to add additional discovery information for regular client systems. It’s very similar…