银河麒麟服务器操作系统搭建证书服务器并颁发可用于签名的证书步骤说明

银河麒麟服务器操作系统搭建证书服务器并颁发可用于签名的证书的方法与前面Centos7上(centos7 使用openssl 配置证书服务器并颁发证书(史上最详细版本)_centos phpinfo显示的openssl配置项为/etc/pki/tls/openssl.c-CSDN博客)是一样的,不过使用的openssl版本不同,可能略微不同。  就还是稍微记录一下吧~~

使用cat /etc/os-release命令获取当前系统版本信息:

一、安装openssl工具

rpm -qa openssl  #如果没有查询到则需要进行安装

yum install -y openssl #如果服务器可联网,yum install 命令安装即可,如服务器不可联网,则使用对应服务器CPU架构的离线安装包,通过命令 rpm -ivh xxx.rpm 命令安装

安装好了openssl工具之后,默认安装目录为:/etc/pki/目录。cd /etc/pki/ 跳转到目录下,ls查看目录结构:

在进行搭建证书服务器之前,需要先了解openssl配置文件的作用。

1.1openssl.cnf配置文件作用简介

openssl工具安装之后,默认配置文件目录为/etc/pki/tls/openssl.cnf,该文件主要设置了证书请求、签名、crl相关的配置。主要相关的伪命令为ca和req。该文件从功能结构上分为4个段落:默认段、ca相关的段、req相关的段、tsa相关的段。每个段中都以name=value的格式定义。

1.1.1配置默认路径

配置默认路径:包括默认的CA路径dir、证书路径certs、crl路径crl_dir、根证书路径certificate、serial文件路径serial、私钥路径private_key等。生成根证书的私钥、证书时可以根据此配置文件里的设置设定文件名,也可以根据自己的需要自行设置文件名,然后再对此配置文件进行修改,将对应的文件名信息改正确。

 一般需要设置的就是:

1)dir             = /etc/pki/CA    设定这个路径 为home路径,所有ca相关的证书都在这个文件夹里

2)certificate     = $dir/XXXX  设定根证书文件路径 ,这是自建证书服务器时需要去生成的。

3)serial          = $dir/serial  这个 就建议就用serial做文件名,即需要在这个路径下生成一个名为serial的文件,并且需要向这个文件中添加初始值

4)private_key     = $dir/private/XXXX  # The private key 设定根证书对应的私钥文件路径

####################################################################

[ ca ]

default_ca      = CA_default            # The default ca section

####################################################################

[ CA_default ]

dir             = /etc/pki/CA           # Where everything is kept

certs           = $dir/certs            # Where the issued certs are kept

crl_dir         = $dir/crl              # Where the issued crl are kept

database        = $dir/index.txt        # database index file.

#unique_subject = no                    # Set to 'no' to allow creation of

                                        # several ctificates with same subject.

new_certs_dir   = $dir/newcerts         # default place for new certs.

certificate     = $dir/cacert.pem       # The CA certificate

serial          = $dir/serial           # The current serial number

crlnumber       = $dir/crlnumber        # the current crl number

                                        # must be commented out to leave a V1 CRL

crl             = $dir/crl.pem          # The current CRL

private_key     = $dir/private/cakey.pem# The private key

RANDFILE        = $dir/private/.rand    # private random number file

(具体路径可根据自己的情况进行配置,然后去生成相关的文件,也可以先生成相关的文件,然后再对此配置文件进行修改,一定要确保配置文件里的路径是正确的,否则可能会报错):

1.1.2规定签发的证书的用途

如规定证书中的密钥用途:这个证书用途的体现在:当使用证书浏览器查看时看到的密钥用法,如通过浏览器---internet选项---内容---证书---详细信息中显示的密钥用法信息,如下图所示:

对应的配置内容为:

当需要在证书的密钥用法中展示数字签名并可用于签名时,就需要将此部分的keyUsage内容开放:

# This is typical in keyUsage for a client certificate.

keyUsage = nonRepudiation, digitalSignature, keyEncipherment

vi /etc/pki/tls/openssl.cnf

1.1.3规定证书信息的匹配情况

具体体现在证书生成证书请求文件时设定的要与根证书设定的一样,如果设定不一样,在做证书签名时就会报错,提示对应设定不匹配。

如:以下配置就要求 countryName、stateOrProvinceName、organizationName三个都是一样的。

对于openssl.cnf文件的更加详细的介绍,可参考其他资料。

二、生成根证书

生成证书的步骤是:生成私钥文件---》生成证书请求文件---》生成公钥证书文件并进行签名。

生成证书的过程中会涉及多个文件,如:私钥文件、证书请求文件、公钥证书文件等,非常容易搞混淆,一定要区分清楚,建议就从文件名、后缀加以区分,否则就真的非常容易踩坑。如私钥就用xxxKey.pem;证书请求文件:xxxreq.pem、公钥证书文件:xxxCert.crt。一定要搞清楚自己的文件到底是哪种类型的!

2.1生成根证书的私钥

openssl genrsa 命令是会用来生成 RSA 私有秘钥,不会生成公钥,因为公钥提取自私钥。生成私钥时是可以指定私钥长度和密码保护。如果需要查看公钥或生成公钥,可以使用 openssl rsa 命令。

 openssl genrsa [-out filename] [-passout arg] [-aes128] [-aes192] [-aes256] [-camellia128] [-camellia192] [-camellia256] [-des]

可以通过openssl genrsa 命令查看命令具体参数与用法:

[root@ecs-be9a CA]#openssl genrsa ?

usage: genrsa [args] [numbits]

 -des            encrypt the generated key with DES in cbc mode

 -des3           encrypt the generated key with DES in ede cbc mode (168 bit key)

 -idea           encrypt the generated key with IDEA in cbc mode

 -seed

                 encrypt PEM output with cbc seed

 -aes128, -aes192, -aes256

                 encrypt PEM output with cbc aes

 -camellia128, -camellia192, -camellia256

                 encrypt PEM output with cbc camellia

 -out file       output the key to 'file

 -passout arg    output file pass phrase source

 -f4             use F4 (0x10001) for the E value

 -3              use 3 for the E value

 -engine e       use engine e, possibly a hardware device.

 -rand file:file:...

                 load the file (or the files in the directory) into

                 the random number generator

[root@ecs-be9a CA]#

openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048

生成私钥,私钥中含有公钥,如果需要公钥,需要单独提取公钥 。

如果在openssl genrsa 命令中指定加密算法如 -des3 ,则会提示输入私钥保护密码,那么下次使用这个私钥文件的时候就会提示输入私钥密码,如命令:openssl genrsa -des3 -out test1.key 2048执行效果如下图所示:

2.2生成根证书的证书请求文件

2.2.1准备--创建serial文件

在生成证书请求文件之前,需要形成记录数据的文件index.txt以及最初始的自签名证书的序列号可serial文件:

 touch index.txt  #生成数据记录文件index.txt

向serial中写入证书初始序列号,这个serial文件路径就按照openssl.cnf配置文件中的路径生成就可以。网上很多是向serial中写入01,像这样:

但是,实际上,这个序列号最终是显示到自签名的根证书的序列号里的,像这样:

对于x509证书来说,序列号应该是一个32位的类似uuid的标志证书序列号的,因此,我个人不建议直接向serial中写01,可写一个32位的如:

a87a2d6dec4d07bd9095c9b2ee73b2ea

9579518878956341ccc51615197eb0f3

51b55180d6da29cdbaddf60d9430230a

5ce48cc7f764ad17aa6fe2a1ffab06d5

dd7b4730fa89a66b8edd977415a8b688

1ce7727ba8fb7be4dca36c354d1ae61f

因此,可这样操作:

 echo 9579518878956341ccc51615197eb0f3 >serial

2.2.2生成根证书的证书请求文件

创建证书请求文件使用openssl req命令。

该命令主要的功能有,生成证书请求文件, 查看验证证书请求文件,还有就是生成自签名证书。生成证书请求需要什么:申请者需要将自己的信息及其公钥放入证书请求中。但在实际操作过程中,所需要提供的是私钥而非公钥,建议使用CA的私钥文件/etc/pki/CA/private/cakey.pem来创建待自签署的证书请求文件,虽非必须,但方便管理。在生成证书请求文件时,就会根据配置文件里要求的整合素必须项进行输入设置。另外,还需要将提供的数据进行数字签名(使用单向加密),保证该证书请求文件的完整性和一致性,防止他人盗取后进行篡改。

openssl req命令参数说明:

    -new    :说明生成证书请求文件

     -x509   :说明生成自签名证书

     -key    :指定已有的秘钥文件生成秘钥请求,只与生成证书请求选项-new配合。

     -newkey :-newkey是与-key互斥的,-newkey是指在生成证书请求或者自签名证书的时候自动生成密钥, 然后生成的密钥名称由-keyout参数指定。当指定newkey选项时,后面指定rsa:bits说明产生 rsa密钥,位数由bits指定。 如果没有指定选项-key和-newkey,默认自动生成秘钥。

     -out    :-out 指定生成的证书请求或者自签名证书名称

     -config :默认参数在ubuntu上为 /etc/pki/tls/openssl.cnf, 可以使用-config指定特殊路径的配置文件

     -nodes  :如果指定-newkey自动生成秘钥,那么-nodes选项说明生成的秘钥不需要加密,即不需要输入passphase.

     -batch  :指定非交互模式,直接读取config文件配置参数,或者使用默认参数值    

执行如下命令生成根证书的请求文件:

 openssl req -new -x509 -key  /etc/pki/CA/private/cakey.pem -out careq.pem -days 730 -config  /etc/pki/tls/openssl.cnf   #使用-key指定使用的根证书的私钥文件  /etc/pki/CA/private/cakey.pem,-config指定配置文件 /etc/pki/tls/openssl.cnf ; -days 730指定有效期为730天 ;-out careq.pem指定输出文件为当前命令执行目录下careq.pem

生成证书请求文件时,要求输入配置文件里设定的必须的信息值。如在上文中我配置了要求countryName、stateOrProvinceName、organizationName三个是一致的,因此此时这三者是需要填写,并且需要记住的。其中对于最终生成的根证书来说这些填写的信息最终体现在证书的详细信息中(生成证书请求文件时输入的信息对应的就是使用者信息):

在证书详细信息中、各参数含义如下:

C-----国家(Country Name)

S----省份(State or Province Name)

L----城市(Locality Name)

O----公司(Organization Name)

OU----部门(Organizational Unit Name)

CN----通用名(Common Name)

emailAddress----邮箱(Email Address)

通过 openssl req 命令生成证书请求文件careq.pem :

2.3生成根证书公钥证书并进行自签名

要提供CA自己的证书,测试环境下CA只能自签署,使用"openssl req -x509"、"openssl x509"和"openssl ca"都可以自签署证书请求文件。 自签署的证书就是自签名证书,自签名证书的体现就是:查看证书时,证书的颁发给与颁发者是一致的,如下图所示:

openssl x509 命令:

该X509命令是一个多目的证书效用。它可用于显示证书信息、将证书转换为各种形式、像“迷你 CA”一样签署证书请求或编辑证书信任设置。

执行命令:

openssl req -x509 -new -key /etc/pki/CA/private/cakey.pem -in careq.pem -out cacert.pem -days 3650  -new:表明要使用新的私钥文件 -key:指定签名使用的私钥 -in:指定签名使用的证书请求文件 -out:指定输出的证书的文件信息   -days :指定生成的证书文件的有效期

进行自签名:

做完自签名之后,我们就可以得到一个自签名根证书了。

2.3.1pem格式证书转换crt

注意:按照前面操作的步骤我们得到的是一个PEM后缀格式的根证书的公钥证书文件cacert.pem,对于后续的个人证书的签发没有影响,但对于windows操作系统来说,是不能直接使用的,如果需要在windows上导入证书存储区需要做一个格式转换。

openssl x509 -outform der -in cacert.pem -out cacert.crt

前面我们提到,在证书的配置文件中规定了证书的信息匹配问题,主要体现在这里,生成证书请求文件时输入的信息与签名用的根证书信息不匹配时可能会报错。例如下图所示就是因为生成证书请求文件时候输入的stateOrProvinceName不一致提示了:The stateOrProvinceName field needed to be the same in the CA certificate(XXXX) and the request(XXX):

在完全生成了需要的根证书的私钥文件、证书请求文件、根证书之后,我们就可以再次确认一下配置文件 /etc/pki/tls/openssl.cnf里的私钥文件路径、根证书路径是否是对的。

做完以上操作就已经完成了根证书的设置,接下来只需要进行需要个人证书的私钥生成、证书请求文件的生成、公钥证书的生成、生成需要的pfx格式证书文件、抽取需要的证书链p7b文件,最后通过结合使用pfx格式证书以及p7b证书链,只要能完整的验证证书的完整性,证书目的是可用于签名的就算是达到目的了

三、生成需要使用的可用于签名的证书

与生成根证书的过程类似,都是:生成私钥文件---》生成证书请求文件---》生成公钥证书文件并进行签名。不一样的地方在于,签署证书使用的是前面产生的根证书的相关文件。具体步骤如下。

3.1生成签名证书的私钥

执行如下命令生成签名证书需要的私钥文件:

openssl genrsa -des3 -out testkey.pem 2048

 -des3参数表示加密算法为des3 需要输入即将生成这个私钥文件testuser2key.pem的加密密码,请牢记这个密码,后续需要使用到。现象如下 ,提示输入加密密码并确认输入,两次输入的信息必须是一致的。

3.2生成签名证书的证书请求文件

生成需要使用的签名证书私钥对应的证书请求文件:

openssl  req -new -key testkey.pem -out testreq.pem -days 365 -config /etc/pki/tls/openssl.cnf

 -key 指定当前使用的私钥文件、-out 指定当前要生成的证书请求文件的名字,如上述命令均为指向当前目录下的文件。当使用的密钥文件有加密时,就会提示输入加密使用的密码。之后会提示输入这个证书请求文件的主要信息如:

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [AU]:CN

State or Province Name (full name) [Some-State]:CQ

Locality Name (eg, city) []:cq

Organization Name (eg, company) [Internet Widgits Pty Ltd]:Company

Organizational Unit Name (eg, section) []:

Common Name (e.g. server FQDN or YOUR name) []:test

Email Address []:

Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:

An optional company name []:

这些信息最终会在证书的详细信息的使用者中展示。

如下图所示就是在生成证书请求文件时设置的Common Name为testuser1最终签发的证书,Common Name就是指的颁发给即证书使用者信息:

整体过程图如下,使用的密钥有密码,需要输入正确的密码,extra部分为可选内容可直接回车:

生成的证书请求文件:

3.3用Ca的根证书相关文件签发 签名证书的公钥证书文件

生成签名证书的公钥证书文件,在生成根证书的时候采用的是自签名,所以是使用的根证书自己的私钥去做签名。而到这里需要的签名证书的公钥证书文件的时候就需要注意:是用的签名证书的证书请求文件根证书的公钥证书文件、以及根证书的私钥文件来进行签发:

执行命令: openssl ca -in testreq.pem -cert /etc/pki/CA/cacert.pem -keyfile /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/testcert.crt -config /etc/pki/tls/openssl.cnf

 -in 指定当前使用的证书请求文件;-cert 指定当前签发用的根证书的公钥证书文件,-keyfile 指向当前使用的根证书公钥文件对应的根证书私钥文件;-out 指定即将生成的公钥证书文件名,不指定目录的情况下均为当前目录。

这样就得到了crt后缀的公钥证书文件了。

3.4生成签名证书的pfx格式文件

 openssl pkcs12 -export -inkey testkey.pem -in testcert.crt  -out test.pfx

-in 使用的是签名通过证书请求文件已签发的公钥证书文件

-inkey 使用的是私钥文件

-out 指定生成的pfx格式文件 不指定路径为当前目录下

导出pfx格式证书文件时,还提示输入的密码就使用此证书文件需要的密码,要牢记。

4.4.1检测生成的证书

        将生成的pfx文件testuser2.pfx、根证书文件caroot.crt通过windows客户端安装检查最终结果如下:

1、双击安装pfx文件:

下一步:

下一步,输入生成pfx设置的密码:

下一步,根据证书类型,自动选择证书存储即可:

点击完成即可。

如果安装的是根证书,则要选择存储区域,将其安装到受信任的根证书颁发机构中的安装的根证书存储位置:受信任的根证书颁发机构里,颁发给与颁发者信息完全一致,是一个自签名的根证书。

查看证书:

生成证书请求文件输入的Common Name信息就是颁发给显示的,详细信息里的使用者信息就是全部输入的信息:

当对应的根证书也安装时就能进行验证:

证书密钥用法含Digital Signature:

四、生成根证书的证书链p7b文件

签名盖章时需要使用p7b文件去验证证书链,这里说的证书链必然是要包含到根证书信息的,因此使用的是根证书的相关文件进行抽取证书链。

生成p7b命令语法:

openssl  crl2pkcs7  [-inform PEM|DER ] [-outform PEM|DER ] [-in filename ]

[-out filename ] [-certfile filename ] [-nocrl ]

选项说明:

-inform PEM|DER:输入文件的格式。DER是DER编码的CRL对象。PEM(默认的格式)是base64编码的CRL对象。

-outform PEM|DER:指定文件的输出格式,跟-inform的意思一样。

 -in filename:指定CRL文件,不设置此项则从标准输入中获取。

-out filename:指定输出文件,不设置此项则输入到标准输出。

-certfile filename:指定证书文件,PEM格式的证书文件可以包含多个证书,此选项可以多次使用。

-nocrl:不处理crl。一般情况下,输出文件中包含crl信息,设置此选项时,读取时忽略CRL信息,生成的信息不保护CRL信息。

要导出的是根证书的证书链文件,一定是通过根证书的公钥证书文件导出证书链p7b文件:

执行命令:openssl crl2pkcs7 -certfile cacert.pem -outform DER -out caRoot.p7b -nocrl

至此需要的签名证书 test.pfx、根证书链caroot.p7b均已生成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/632120.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【计算机组成与体系结构Ⅱ】多Cache一致性的模拟分析(实验)

实验八:多Cache一致性的模拟分析 一、实验目的 1:加深对多 Cache 一致性的理解。 2:进一步掌握解决多 Cache一致性的目录协议和监听协议的基本思想。 3:掌握在各种情况下, 目录协议和监听协议是如何工作的&#xf…

跨Android、iOS、鸿蒙多平台框架ArkUI-X

ArkUI是一套构建分布式应用界面的声明式UI开发框架。它使用极简的UI信息语法、丰富的UI组件、以及实时界面预览工具,帮助您提升移动应用界面开发效率30%。您只需使用一套ArkTS API,就能在Android、iOS、鸿蒙多个平台上提供生动而流畅的用户界面体验。 一…

16.7 基于递归神经网络的分层多楼多层室内定位

文献来源:西交利物浦大学 Elesawi A E A, Kim K S. Hierarchical multi-building and multi-floor indoor localization based on recurrent neural networks[C]//2021 Ninth International Symposium on Computing and Networking Workshops (CANDARW). IEEE, 202…

MySQL优化之SQL调优策略

首先以一张思维导图从全局上给大家分享以下几种SQL优化策略,再详细讲解 1、避免使用SELECT * 在阿里的编码规范中也强制了数据库查询不能使用SELECT *,因为SELECT *方式走的都是全表扫描,导致的结果就是查询效率非常低下,其原因为…

苹果笔记本 macbook 在 office word 中使用 mathtype 的方法

前言 想在 MacBook 中使用 mathtype,去搜索,去 Apple Store 下载也发现没有 解决方法 打开 office Word 的「插入」中的「获取加载项」、「我的加载项」。 在应用商店中下载,需要登录自己的微软账号。 加载成功后就可以使用了。 注意 和…

【Unity实战100例】Unity对Ini格式的配置文件管理和读写

目录 一.编写ini格式配置文件 二.读取解析ini文件 三.调用属性 INI 文件以文本形式存储,易于阅读和编辑。这种人可读的格式使得调整配置参数变得更加直观,不需要专门的工具。 INI 文件是一种轻量级的配置文件格式,不需要复杂的解析器或库。它的结构相对简单,适用于小到

What is `addFormattersdoes` in `WebMvcConfigurer` ?

addFormatters 方法在SpringMVC框架中主要用于向Spring容器注册自定义的格式化器(Formatter) SpringMVC内置了一系列的标准格式化器,用于处理日期、数字和其他常见类型的转换。 开发者也可以通过实现 WebMvcConfigurer 接口,并重写…

Unix时间戳

时间戳,相信很多相关专业的人,计算机软件电子等等都会听过。由于最早是由Unix系统使用所以又叫Unix时间戳。 Unix 时间戳(Unix Timestamp)定义为从UTC(世界协调时)/GMT(格林尼治时)…

内网穿透的应用-使用Docker搭建一个Wiki.Js知识库系统并实现分享他人远程创作

文章目录 1. 安装Docker2. 获取Wiki.js镜像3. 本地服务器打开Wiki.js并添加知识库内容4. 实现公网访问Wiki.js5. 固定Wiki.js公网地址 不管是在企业中还是在自己的个人知识整理上,我们都需要通过某种方式来有条理的组织相应的知识架构,那么一个好的知识整…

KNN算法原理及应用

理解KNN 算法原理 KNN是监督学习分类算法,主要解决现实生活中分类问题。 根据目标的不同将监督学习任务分为了分类学习及回归预测问题。 监督学习任务的基本流程和架构: (1)首先准备数据,可以是视频、音频、文本、…

【C++】STL 算法 - 累加填充算法 ( 元素累加算法 - accumulate 函数 | 元素填充算法 - fill 函数 )

文章目录 一、元素累加算法 - accumulate 函数1、函数原型分析2、代码示例 二、元素填充算法 - fill 函数1、函数原型分析2、代码示例 一、元素累加算法 - accumulate 函数 1、函数原型分析 在 C 语言 的 标准模板库 ( STL , STL Standard Template Library ) 中 , 提供了 accu…

晶格动力学 GULP 软件的安装步骤

---------------------------------------------------------------------- GULP软件现已发展到5.2版本,其使用Fortran编译器,可运行在Linux/Unix系统下,但不提供任何Windows版本的技术支持。 下载网址: http://gulp.curtin.ed…

flink 最后一个窗口一直没有新数据,窗口不关闭问题

flink 最后一个窗口一直没有新数据&#xff0c;窗口不关闭问题 自定义实现 WatermarkStrategy接口 自定义实现 WatermarkStrategy接口 窗口类型&#xff1a;滚动窗口 代码&#xff1a; public static class WatermarkDemoFunction implements WatermarkStrategy<JSONObject…

10种较流行的网络安全框架及特点分析

网络安全框架主要包括安全控制框架&#xff08;SCF&#xff09;、安全管理框架&#xff08;SMP&#xff09;和安全治理框架&#xff08;SGF&#xff09;等类型。对于那些希望按照行业最佳实践来开展网络安全能力建设的企业来说&#xff0c;理解并实施强大的网络安全框架至关重要…

Demystifying CXL Memory with Genuine CXL-Ready Systems and Devices——论文阅读

MICRO 2023 Paper CXL论文阅读汇总 问题 对更大容量和更高带宽的内存的不断增长的需求推动了基于Compute eXpress Link&#xff08;CXL&#xff09;的内存扩展和分离技术的创新。特别是&#xff0c;基于CXL的内存扩展技术不仅能够经济地扩展内存容量和带宽&#xff0c;还能够…

【数据结构】二叉树(遍历,递归)

&#x1f308;个人主页&#xff1a;秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343&#x1f525; 系列专栏&#xff1a;《数据结构》https://blog.csdn.net/qinjh_/category_12536791.html?spm1001.2014.3001.5482 ​​​ 目录 二叉树遍历规则 前序遍历 ​…

flutter 客户端日志上传定位错误信息

背景 flutter 开发的app 安装到真机上 无法定位报错信息&#xff0c;只能使用usb连接电脑 使用adb logcat来查看日志效率低下。 想法 如果将flutter 开发的app 运行的时候 将日志写进一个日志文件里面去&#xff0c;然后给flutter app搭建一个http服务器&#xff0c;后端知道对…

如何使用VNC实现Win系统远程桌面Ubuntu图形化界面【内网穿透】

文章目录 推荐前言1. ubuntu安装VNC2. 设置vnc开机启动3. windows 安装VNC viewer连接工具4. 内网穿透4.1 安装cpolar【支持使用一键脚本命令安装】4.2 创建隧道映射4.3 测试公网远程访问 5. 配置固定TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址5.3 …

vue:处理base64格式文件pdf、图片预览

一、需求&#xff1a;后端返回是base64数据&#xff0c;需要前端处理来展示文件。 二、实现方法&#xff1a; 解释一下这段代码的功能&#xff1a; &#xff09;preview(item) 是一个函数&#xff0c;接受一个参数 item&#xff0c;其中包含了文件的相关信息。 &#xff09;首…

HTML5+CSS3+JS小实例:实时给中文添加拼音

实例:实时给中文添加拼音 技术栈:HTML+CSS+JS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"&…