<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
        <title>OpenSSL - 标签 - 开发者技术小屋</title>
        <link>https://www.developerhome.net/tags/openssl/</link>
        <description>OpenSSL - 标签 - 开发者技术小屋</description>
        <generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Fri, 04 Jun 2021 17:08:22 &#43;0000</lastBuildDate><atom:link href="https://www.developerhome.net/tags/openssl/" rel="self" type="application/rss+xml" /><item>
    <title>centos7升级openssh以及openssl</title>
    <link>https://www.developerhome.net/archives/607/</link>
    <pubDate>Fri, 04 Jun 2021 17:08:22 &#43;0000</pubDate>
    <author>Jarod</author>
    <guid>https://www.developerhome.net/archives/607/</guid>
    <description><![CDATA[<div class="featured-image">
                <img src="/uploads/2026/06/cover-607.jpg" referrerpolicy="no-referrer">
            </div><h1></h1>
<h1 id="背景">背景</h1>
<p>在开发过程中，需求甲方提供的服务器还是用的是<code>Centos7</code>系统，其<code>openssh</code>以及<code>openssl</code>版本还很低，安全方面有很多问题，而<code>yum</code>又无法升级，因此我们需要通过下载源码来安装，本文就一步一步教大家如何通过源码升级最新的<code>openssh</code>以及<code>openssl</code></p>
<h1 id="升级openssl">升级openssl</h1>
<p>首先，我们需要去<a href="https://www.openssl.org/source/" target="_blank" rel="noopener noreffer ">openssl官网</a>下载最新的版本源码包</p>
<blockquote>
</blockquote>
<p>作者当前最新稳定版本为 openssl-1.1.1k.tar.gz</p>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-bash">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="复制到剪贴板"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nb">cd</span> /root
</span></span><span class="line"><span class="cl">curl -o openssl.tar.gz https://www.openssl.org/source/openssl-1.1.1k.tar.gz
</span></span><span class="line"><span class="cl">tar xzf openssl.tar.gz</span></span></code></pre></div></div>
<p>下载之后，我们进入目录</p>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-bash">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="复制到剪贴板"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nb">cd</span> openssl-1.1.1k/</span></span></code></pre></div></div>
<p>查看下安装说明</p>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-bash">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="复制到剪贴板"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">more INSTALL</span></span></code></pre></div></div>
<p>现在我们先安装依赖</p>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-bash">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="复制到剪贴板"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">yum instal -y gcc zlib-devel pam pcre-devel perl autoconf</span></span></code></pre></div></div>
<blockquote>
</blockquote>
<p>如果不需要安装pam和zlib的话可以不安装这两个</p>]]></description>
</item>
<item>
    <title>使用openssl生成自签证书</title>
    <link>https://www.developerhome.net/archives/547/</link>
    <pubDate>Fri, 11 Dec 2020 14:03:11 &#43;0000</pubDate>
    <author>Jarod</author>
    <guid>https://www.developerhome.net/archives/547/</guid>
    <description><![CDATA[<div class="featured-image">
                <img src="/uploads/2026/06/cover-547.jpg" referrerpolicy="no-referrer">
            </div><p>在grpc微服务集群中，我们常常使用自签证书来做服务加密，那如何生成自签证书呢？下面就使用<code>openSSL</code>来生成自签证书</p>
<p>首先我们需要生成服务私钥</p>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="复制到剪贴板"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><pre tabindex="0"><code>openssl genrsa -out server.key 1024</code></pre></div>
<p>通过私钥生成证书签名文件</p>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="复制到剪贴板"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><pre tabindex="0"><code>openssl req -new -key server.key -out server.csr</code></pre></div>
<p>现在按照提示，需要按提示输入<code>Country Name</code>
再按照提示，输入<code>State or Province Name</code>
按提示输入<code>Locality Name</code>
再输入<code>Organization Name</code>
再输入<code>Organizational Unit Name</code>
输入<code>Common Name</code>,此处可以写交互的域名
输入<code>Email Address</code>
之后会提示输入一个密码，对证书做保护
再按提示输入一个可选的公司名
这时可以看到生成了一个<code>server.csr</code></p>
<p>现在我们已经有了证书签名文件，再使用命令申请一个证书</p>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="复制到剪贴板"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><pre tabindex="0"><code>openssl x509 -req -in server.csr -out server.crt -signkey server.key -days 365</code></pre></div>
<p>这样就生成一个有效期一年的证书，也可以更改365来变更有效期</p>]]></description>
</item>
<item>
    <title>浅谈flutter开发中使用rsa非对称加密</title>
    <link>https://www.developerhome.net/archives/308/</link>
    <pubDate>Sat, 30 Mar 2019 22:44:09 &#43;0000</pubDate>
    <author>Jarod</author>
    <guid>https://www.developerhome.net/archives/308/</guid>
    <description><![CDATA[<div class="featured-image">
                <img src="/uploads/2026/06/cover-308.jpg" referrerpolicy="no-referrer">
            </div><p>之前一直在用RN开发应用，最近Flutter很火，就研究了下，而大家在开发与服务端做接口交互时，为了保证安全性，基本上都会使用加密方式来隐藏通讯内容，非对称加密方式，相比其他固定算法加密方式要安全很多，</p>
<p>非对称加密使用了私钥、公钥来分别对数据进行解密、加密操作，公钥做加密后的数据，只有私钥才能解密，因此会非常的安全。</p>
<p>Flutter使用的是Dart语言，Dart语言和Java非常的像，基本上会使用Java的程序员可以直接上手，部分查下就Ok了。</p>
<p>在Dart中，非对称加密可以使用 <a href="https://pub.dartlang.org/packages/encrypt" target="_blank" rel="noopener noreffer ">encrypt</a> 包，可以直接在 <code>pubspec.yaml</code> 中增加 <code>encrypt: ^2.0.0</code> 即可完成包的引用，当然，不要忘记执行 <code>packages get</code></p>
<p>做非对称加密，就必须要有公钥和私钥，特别注意一点，当前的 encrypt 为2.0.0版本，当前仅支持 PKCS#1文件格式的密钥</p>
<p>首先我们要生成私钥<code>bash\nopenssl genrsa -out private_key.pem 4096</code>这样就生成了一个私钥，而且就是PKCS#1格式的，如果有PKCS#8格式的，也可以用这个命令来转换为PKCS#1<code>bash\nopenssl pkcs8 -in pkcs8_private_key.pem -nocrypt -out pkcs1_private_key.pem</code></p>
<p>第一个坑，在flutter中，密钥文件直接存放在目录中是无法使用File读取到的，只能放在asset中才可以，所以需要在 <code>pubspec.yaml</code>中增加相关密钥文件才行，例如将密钥文件存放在与 <code>pubspec.yaml</code> 同级的目录 <code>keys</code> 下，则需要在 <code>pubspec.yaml</code> 中增加如下代码</p>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-dart">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="复制到剪贴板"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-dart" data-lang="dart"><span class="line"><span class="cl"><span class="nl">assets:</span>
</span></span><span class="line"><span class="cl">  <span class="o">-</span> <span class="n">keys</span><span class="o">/</span><span class="n">private_key</span><span class="p">.</span><span class="n">pem</span>
</span></span><span class="line"><span class="cl">  <span class="o">-</span> <span class="n">keys</span><span class="o">/</span><span class="n">public_key</span><span class="p">.</span><span class="n">pem</span></span></span></code></pre></div></div>
<p>之后我们可以在代码中使用</p>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-java">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="复制到剪贴板"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="n">String</span><span class="w"> </span><span class="n">publicKeyString</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">await</span><span class="w"> </span><span class="n">rootBundle</span><span class="p">.</span><span class="na">loadString</span><span class="p">(</span><span class="err">&#39;</span><span class="n">keys</span><span class="o">/</span><span class="n">public_key</span><span class="p">.</span><span class="na">pem</span><span class="err">&#39;</span><span class="p">);</span></span></span></code></pre></div></div>
<p>来获取到公钥的文本，再通过</p>]]></description>
</item>
</channel>
</rss>
