如何在Azure网站上安全地管理Google Analytics证书

时间:2015-10-15 00:04:50

标签: c# asp.net-mvc azure google-analytics asp.net-core

我已阅读this tutorial有关如何将Google Analytics与C#结合使用的信息。

我想在我的ASP.NET5应用程序中使用它,我想做得对。我需要使用服务帐户身份验证(我的应用程序将获取统计数据并将我生成的预设报告提供给用户)。

  • 我想将证书保留在代码库之外
  • 我不希望每次部署时都要记住它
  • 最好的选择是在Azure门户中配置它(如连接字符串) - 但据我所知,他们不接受配置中的文件

Google以2种形式提供证书

  • JSON文件
  • p12档案

我正在考虑从JSON证书中提取值并将它们置于配置中,但是我必须设置X509Certificate2,它只需要P12文件的路径,或构造函数中的一些神秘的byte[] rawData

var certificate = new X509Certificate2(pathToP12File, "myPassword", X509KeyStorageFlags.Exportable);
var credential = new ServiceAccountCredential( new ServiceAccountCredential.Initializer(serviceAccountEmail) {
                                                   Scopes = scopes}.FromCertificate(certificate));

任何想法该怎么做?

1 个答案:

答案 0 :(得分:0)

对于WebApp,请转到Azure Portal

  1. 浏览到您的WebApp>>设置> >自定义域和SSL>>上传证书并完成使用证书的过程。下一步...
  2. 设置应用程序设置以使用证书:设置>>应用程序设置 - 并在应用程序设置部分添加了密钥:WEBSITE_LOAD_CERTIFICATES,值:*(注意 - 这也可以是指纹或逗号分隔的指纹列表
  3. 使用类似于下面的代码来检索证书(注意 - 在WebApps中,证书存储在if (mysqli_connect_errno($con)) { print_r("Connect failed: %s\n", mysqli_connect_error()); exit(); } if(isset($_POST["submit"])){ $name = mysqli_real_escape_string($con, $_POST['name']); $company = mysqli_real_escape_string($con,$_POST['company']); $email = mysqli_real_escape_string($con,$_POST['email']); $comment = mysqli_real_escape_string($con,$_POST['comment']); // Insert our data $query = mysqli_query($con, "INSERT INTO `contacts` (`name`, `company`, `email`, `comment`) VALUES ('$name', '$company', '$email', '$comment')"); if($query) { print_r('Success'); } else { print_r('Query Failed'); } mysqli_close($con); } 中:

    StoreLocation.CurrentUser
  4. Web / Worker角色类似,通过门户网站(1)将证书上传到Cloud Service并跳过(2)。对于(3),请注意Web / Worker角色中的证书存储在var thumb = "your-certificate-thumbprint"; var store = new X509Store(StoreName.My, StoreLocation.CurrentUser); store.Open(OpenFlags.ReadOnly); var cert = store.Certificates.Cast<X509Certificate2>().FirstOrDefault(xc => xc.Thumbprint == thumb); if (cert == null) { throw new Exception(string.Format("Could not find a certificate with thumbprint {0} in StoreName.{1} at StoreLocation.{2}", thumb, store.Name, store.Location)); }