服务堆栈上的 SSL

2024-04-28

Mono 上的服务堆栈是否支持 SSL?

我只能访问 Mac,我在这里找到的说明要求您使用 Windows 工具创建 pvk 文件:http://joshua.perina.com/geo/post/using-ssl-https-with-mono-httplistener http://joshua.perina.com/geo/post/using-ssl-https-with-mono-httplistener

该站点作为 Linux 守护进程托管,使用 upstart 脚本来保持服务器正常运行。


我最终在我的应用程序主机中编写了一些代码,以启用对服务堆栈的 SSL 支持,该服务堆栈在幕后使用 HttpListener。以下是一些为控制台应用程序的服务堆栈启用 SSL 的代码:

public class AppHost : AppHostHttpListenerBase
{
    public AppHost() : base("Service", typeof(AppHost).Assembly) 
    {
    }

    public override void Configure(Funq.Container container)
    {
        Plugins.Add(new RazorFormat());
    }

    static void AddP12 (string filename, string password, ushort port)
    {
        string dirname = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
        string path = Path.Combine(dirname, ".mono");
        path = Path.Combine(path, "httplistener");
        if (!Directory.Exists(path))
        {
            Console.WriteLine("Creating directory: " + path);
            Directory.CreateDirectory(path);
        }
        X509Certificate2 x509 = null;
        try {
            x509 = new X509Certificate2 (filename, password);
        } catch (Exception e) {
            Console.Error.WriteLine ("error loading certificate [{0}]", e.Message);
            return;
        }

        string target_cert = Path.Combine (path, String.Format ("{0}.cer", port));
        if (File.Exists(target_cert)) 
        {
            Console.Error.WriteLine ("error: there is already a certificate for that port.");
            return;
        }
        string target_pvk = Path.Combine (path, String.Format ("{0}.pvk", port));
        if (File.Exists(target_pvk)) {
            Console.Error.WriteLine ("error: there is already a certificate for that port.");
            return;
        }

        using (Stream cer = File.OpenWrite (target_cert)) 
        {
            byte[] raw = x509.RawData;
            cer.Write (raw, 0, raw.Length);
        }

        PrivateKey pvk = new PrivateKey();
        pvk.RSA = x509.PrivateKey as RSA;
        pvk.Save(target_pvk);           
    }

    public static void Main(string[] args)
    {
        string listeningOn = string.Empty;
        if (args.Length == 1)
            listeningOn = "http://*:" + args[0] + "/";
        else if (args.Length == 3)
        {
            listeningOn = "https://*:" + args[0] + "/";
            AddP12(args[1], args[2], Convert.ToUInt16(args[0]));
        }
        else
        {
            Console.WriteLine("Usage: [port] [p12 certificate] [p12 password]");
            return;
        }
        AppHost appHost = new AppHost();
        appHost.Init();
        appHost.Start(listeningOn);
        Console.WriteLine("Service Stack Server started at {0}, listening on {1}", DateTime.Now, listeningOn);
        while (true) System.Threading.Thread.Sleep(100);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

服务堆栈上的 SSL 的相关文章

  • Tensorflow 中的自定义资源

    由于某些原因 我需要为 Tensorflow 实现自定义资源 我试图从查找表实现中获得灵感 如果我理解得好的话 我需要实现3个TF操作 创建我的资源 资源的初始化 例如 在查找表的情况下填充哈希表 执行查找 查找 查询步骤 为了促进实施 我
  • MEX 文件中的断言导致 Matlab 崩溃

    我正在使用mxAssert 宏定义为matrix h在我的 C 代码中 mex 可以完美编译 当我调用的 mex 代码中违反断言时 该断言不会导致我的程序崩溃 而是导致 Matlab 本身崩溃 我错过了什么吗 这是有意的行为吗 当我查看 M
  • 如何进行带有偏差的浮点舍入(始终向上或向下舍入)?

    我想以偏置舍入浮动 要么总是向下 要么总是向上 代码中有一个特定的点 我需要这个 程序的其余部分应该像往常一样四舍五入到最接近的值 例如 我想四舍五入到最接近的 1 10 倍数 最接近 7 10 的浮点数约为 0 69999998807 但
  • 通信对象 System.ServiceModel.Channels.ServiceChannel 不能用于通信

    通信对象System ServiceModel Channels ServiceChannel 无法用于通信 因为它处于故障状态 这个错误到底是什么意思 我该如何解决它 您收到此错误是因为您让服务器端发生 NET 异常 并且您没有捕获并处理
  • Linux TUN/TAP:无法从 TAP 设备读回数据

    问题是关于如何正确配置想要使用 Tun Tap 模块的 Linux 主机 My Goal 利用现有的路由软件 以下为APP1和APP2 但拦截并修改其发送和接收的所有消息 由Mediator完成 我的场景 Ubuntu 10 04 Mach
  • 在 Xcode4 中使用 Boost

    有人设置 C Xcode4 项目来使用 Boost 吗 对于一个简单的 C 控制台应用程序 我需要在 Xcode 中设置哪些设置 Thanks 用这个来管理它 和这个
  • 如何在 VS 中键入时显示方法的完整文档?

    标题非常具有描述性 是否有任何扩展可以让我看到我正在输入的方法的完整文档 我想查看文档 因为我可以在对象浏览器中看到它 其中包含参数的描述和所有内容 而不仅仅是一些 摘要 当然可以选择查看所有覆盖 它可能是智能感知的一部分 或者我不知道它并
  • 为什么密码错误会导致“填充无效且无法删除”?

    我需要一些简单的字符串加密 所以我编写了以下代码 有很多 灵感 来自here http www codeproject com KB security DotNetCrypto aspx create and initialize a cr
  • C++11 函数局部静态 const 对象的线程安全初始化

    这个问题已在 C 98 上下文中提出 并在该上下文中得到回答 但没有明确说明有关 C 11 的内容 const some type create const thingy lock my lock some mutex static con
  • 在 C# 中将位从 ulong 复制到 long

    所以看来 NET 性能计数器类型 http msdn microsoft com en us library system diagnostics performancecounter aspx有一个恼人的问题 它暴露了long对于计数器
  • C++派生模板类继承自模板基类,无法调用基类构造函数[重复]

    这个问题在这里已经有答案了 我试图从基类 模板 继承 派生类也是模板 它们具有相同的类型 T 我收到编译错误 非法成员初始化 Base 不是基类或成员 为什么 如何调用基类构造函数 include
  • 两组点之间的最佳匹配

    I ve got two lists of points let s call them L1 P1 x1 y1 Pn xn yn and L2 P 1 x 1 y 1 P n x n y n 我的任务是找到它们点之间的最佳匹配 以最小化它
  • 用于从字符串安全转换的辅助函数

    回到 VB6 我编写了一些函数 让我在编码时无需关心字符串的 null 和 数字的 null 和 0 等之间的区别 编码时 没有什么比添加特殊情况更能降低我的工作效率了用于处理可能导致一些不相关错误的数据的代码 9999 10000 如果我
  • C# using 语句、SQL 和 SqlConnection

    使用 using 语句 C SQL 可以吗 private static void CreateCommand string queryString string connectionString using SqlConnection c
  • 从匿名类型获取值

    我有一个方法如下 public void MyMethod object obj implement 我这样称呼它 MyMethod new myparam waoww 那么我该如何实施MyMethod 获取 myparam 值 Edit
  • 过期时自动重新填充缓存

    我当前缓存方法调用的结果 缓存代码遵循标准模式 如果存在 则使用缓存中的项目 否则计算结果 在返回之前将其缓存以供将来调用 我想保护客户端代码免受缓存未命中的影响 例如 当项目过期时 我正在考虑生成一个线程来等待缓存对象的生命周期 然后运行
  • 如何检测 C# 中该字典键是否存在?

    我正在使用 Exchange Web 服务托管 API 和联系人数据 我有以下代码 即功能性的 但并不理想 foreach Contact c in contactList string openItemUrl https service
  • 如何在 GCC 5 中处理双 ABI?

    我尝试了解如何克服 GCC 5 中引入的双重 ABI 的问题 但是 我没能做到 这是一个重现错误的非常简单的示例 我使用的GCC版本是5 2 如您所见 我的主要函数 在 main cpp 文件中 非常简单 main cpp include
  • 热重载时调用方法

    我正在使用 Visual Studio 2022 和 C 制作游戏 我想知道当您热重新加载应用程序 当它正在运行时 时是否可以触发一些代码 我基本上有 2 个名为 UnloadLevel 和 LoadLevel 的方法 我想在热重载时执行它
  • 如何创建向后兼容 Windows 7 的缩放和尺寸更改每显示器 DPI 感知应用程序?

    我是 WPF 和 DPI 感知 API 的新手 正在编写一个在 Windows 7 8 1 和 10 中运行的应用程序 我使用具有不同每个显示器 DPI 设置的多个显示器 并且有兴趣将我的应用程序制作为跨桌面配置尽可能兼容 我已经知道可以将

随机推荐

  • 当您在 iPad 上的 Safari 浏览器中触摸 HTML 元素时,它会变成灰色。决定嵌套元素中哪个元素显示为灰色的逻辑是什么?

    当您触摸 iPad 上网页中的某个元素 例如编辑框 时 它会在您触摸时变成灰色 我有一张由浮动 div 包裹的桌子 当触摸数据元素时 整个表 或其包装 div 不会变灰 而不是单个数据元素或行变灰 该表的功能是自动补全弹窗 在网站的其他地方
  • 使用Java Compiler API编译多个java文件

    您好 我需要创建 编译和加载 java 类运行时 使用 FTL 我正在创建 java 源文件 并且如果没有动态依赖项 则能够编译源代码 为了详细说明一个实例 我有两个java源文件 一个接口及其实现类 我可以使用 java 编译器 api
  • 正则表达式删除外括号

    我一直在用这个 s s 正则表达式使用 PHP preg replace 函数删除外括号 在我上一个问题中了解更多信息正则表达式匹配除尾随空格之外的任何字符 https stackoverflow com questions 1076569
  • 通过标签收集自定义帖子类型

    我使用以下代码设置了名为 扇区 的自定义帖子类型 register post type sectors array labels gt array name gt Sectors singular name gt sectors has a
  • 交叉编译 Qt 4.7 时出现“非法指令”

    我已经在这个问题上苦苦挣扎了一个多星期了 但仍然找不到解决方案 我正在尝试为 ARM 设备交叉编译 Qt 4 7 嵌入式开源版本 构建过程本身可以顺利完成 但生成的二进制文件似乎包含处理器无法理解的指令 构建主机是 i386 上的 Debi
  • 如何获取 NSURLConnection 中的默认用户代理字符串?

    我想将文本附加到默认的用户代理标头NSURLConnection 我知道怎么做更改 NSURLConnection 的用户代理 https stackoverflow com questions 1532206 changing the u
  • Pymongo 仅以列表形式返回值

    以下 pymongo 查询为我提供了我需要的所有值 l list db rounds find current strategy PPStrategy4016 myFundsChange 1 id 0 myFundsChange 0 300
  • DataRow(数据表)中的链接

    我正在动态构建一个数据表 并尝试在要添加到数据表的数据行中添加一个 链接 DataTable 在创建后绑定到 GridView 像这样的东西 DataTable dataTable new DataTable foreach Item it
  • 在asp.net core中将字典发布到web api

    我有使用开发的简单 Web apiAsp Net Core我正在尝试使用 HttpClient 发布键值对 我尝试了两种方法 第一种方法 Route api controller action public class Transforma
  • 尝试创建问题时 GitHub API 422 出现意外错误响应

    当向 GitHub API V3 发布问题时 我收到了意外的响应 即422不可处理的实体 但是 错误的详细信息是针对搜索端点的 而不是针对 POST 创建端点的 message 验证失败 errors resource 搜索 field q
  • 动态 PayPal 按钮生成 - 这不是很不安全吗?

    我只是想知道 PayPal 按钮不是动态创建的 非常不安全并且很容易被 破解 吗 Like so
  • 将 std::vector 转换为 .NET List 的最有效方法是什么?

    将 std vector 转换为 NET 列表的最有效方法是什么 为了提供一些背景信息 我使用 C CLI 包装了一个非托管 C 类 C CLI 类保存一个指向 C 类的指针 并且我为每个公共方法都有一个包装器 一种方法返回 std vec
  • 使用 grep 仅打印上下文

    Using grep http www computerhope com unix ugrep htm 您可以打印与您的搜索查询匹配的行 添加一个 C选项将打印两行周围的上下文 如下所示 gt grep C 2 lorem some con
  • “yield”不是“std::this_thread”的成员

    我试图产生当前线程 std this thread yield 但不幸的是 海湾合作委员会更清楚 yield 不是 std this thread 的成员 我是否忘记了一些类似于 D GLIBCXX USE NANOSLEEP 的 hack
  • Lua-迭代嵌套表

    我已经学习 Lua 几个星期了 这一次又一次成为我的症结所在 我尝试阅读有关该主题的帖子和书籍 我使用 Lua 查询软件监控系统 Nimsoft 我的数据以表格形式返回给我 我不会发布整个输出 但这里有一个我认为可以描述结构的片段 表参考是
  • 在 pandas DataFrame 中取消嵌套(分解)多个列表列的有效方法

    我正在将多个 JSON 对象读取到一个 DataFrame 中 问题在于某些列是列表 此外 数据非常大 因此我无法使用互联网上可用的解决方案 它们非常慢并且内存效率低下 我的数据如下所示 df pd DataFrame A x1 x2 x3
  • 是否有 R 函数将 p.value 转换为显着性代码?

    summary显示 p values 的显着性代码 是否有 R 函数将 p value 转换为显着性代码 例如 0 02 gt 和 0 005 gt Use symnum如下所示 symnum了解更多信息 p values lt c 9 5
  • log4net 是否会杀死我的 WCF 单元测试?

    我的解决方案中有三个项目 提供我想要测试的功能的 WCF Web 服务 调用该 Web 服务的 Web 应用程序 对服务运行测试的测试项目 Web 服务和 Web 应用程序都使用 log4net 和单独的配置文件 并在 AssemblyIn
  • C++ 中最难发现的错误[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 服务堆栈上的 SSL

    Mono 上的服务堆栈是否支持 SSL 我只能访问 Mac 我在这里找到的说明要求您使用 Windows 工具创建 pvk 文件 http joshua perina com geo post using ssl https with mo