openssl签名配置tomcat7单双向SSL

Windows 下OpenSSL 安装详解 +图解

 

安装环境:

     1、操作系统:Windows XP SP2

      2C++编译器:VC++ 6.0

下载:

  • 下载ActivePerl  5.10.1.1007(最新的版本或较低的版本也可以):

下载地址:http://www.activestate.com/activeperl/downloads/

(当前的最新版本为ActivePerl 5.10.1.1007 ,只要按照Windows下一般程序的安装步骤进行即可~~~在此就不赘述了)

  • 下载 openssl-0.9.8m(当然也可以最新的版本)并解压。

下载地址: http://www.openssl.org/source/

PerlOpenSSL的安装:

   安装Perl

(我的安装目录为C:\perl\eg)

运行“CMD”命令,使用cd命令指向perl安装目录的eg文件,执行“perl example.pl”若显示“Hello from ActivePerl!”,则说明Perl安装成功,可以开始使用Perl的相关命令来进行OpenSSL的安装了,如下图:

 

Note:如果你想看看原始的INSTALL文件,那么请打开OpenSSL的解压缩目录,下面有两个文件INSTALL.W32和INSTALL.W64,用记事本方式打开,你可以看到详细的关于安装的解释~~~~

开始安装OpenSSL

  • 初始化VC++ 6.0 环境变量(找到vc++ 6.0的安装目录下的\VC98\Bin\执行如下的命令):

  • 执行Configure命令(配置编译参数):

  • 运行ms\do_ms命令(在使用Configure脚本配置好参数):

另外两种方式 如果使用也必须保证本机安装有相应的编译器才能使用。
     :ms\do_masm
(默认vc自带的;也可以自己下载masm并安装)   
     :ms\do_nasm (需要下载nasm)

 

  • 运行“nmake -f ms\ntdll.mak”命令进行代码编译(需将目录跳到OpenSSL目录下)

如果编译成功,最后的输出都在out32dll目录下:包括可执行文件、两个dll和两个lib文件: libeay32.dll, libeay32.lib, ssleay32.dll, ssleay32.lib ;把他们放到PATH环境变量对应的一个目录里就可以了。

 

  • 测试使用命令“nmake -f ms\ntdll.mak test”

若安装成功的话,显示的最后几行如下图:

 

  • 配置VC++ 6.0下的相关参数

VC++ 6.0的工具》选项》目录下的Include files下添加OpenSSL安装目录下的include目录;在Library files下添加out32dll目录,现在你就可以使用OpenSSL编程了~~~

 



使用openssl签名证书并在tomcat7中进行配置

 

1 准备
首先,在进行证书签名前准备一些软件,并配置一些环境。包括:
1.1 下载安装openssl
1.2 确定服务器及客户端用户名
这里规划如下:
机器                           机器名                             备注
部署应用服务器的服务器 server.neuqdomain                最好采用:名称 + “.域名”格式
客户端用户              任意                             任意格式
ca根证书                           无                             不同于服务器名的任意名称

这里比较重要的一点是:需要在服务器和测试的客户端中配置该服务器的DNS名称为

server.neuqdomain。在windows下测试时,我们可以直接修改%windir%\system32

\drivers\etc\hosts 文件。在该文件中添加:
127.0.0.1 server.neuqdomain
即可。
1.3 根证书信息规划
检查是否有根证书,如果没有先确定根证书的名称
这里规划根证书为:neuqca
完整信息为:
国家:CN,省:heb,市:qhd,单位性质:com,单位名:neuqsoft
用户名:  neuqrootca    密码:
1.4 服务器端证书规划
这里规划根证书为:server (注意:此服务器端证书用户名必须和服务器机器名一致)
完整信息为:
国家:CN,省:heb,市:qhd,单位性质:com,单位名:neuqsoft
用户名:  server.neuqdomain    密码:
1.5 客户器端证书规划
这里规划根证书为:client (此处客户端用户名可以任意指定)
完整信息为:
国家:CN,省:heb,市:qhd,单位性质:com,单位名:neuqsoft
用户名:  client    密码:
1.6 规划一下保存放置证书的目录
这里产生的证书放到测试用的tomcat中的 %TOMCAT_HOME%\conf\ssl中(实际任意目录均可

,建议统一规划),再在该目录下划分为:ca,server,client,jks几个目录
配置openssl的环境变量
将%openssl_home%\bin目录添加到path的环境变量中,确保能在命令行中执行openssl命令。

执行正确会出现 openssl>提示符。出现提示符后quit即可。
1.7 文件后缀名规划
产生证书过程中会用到的文件后缀规划如下:
后缀名 格式 备注
-key.pem pem pem文件一般是文本格式的,可以放证书或者私钥。这里用来放key文件
-req.csr csr 证书请求文件
-cert.cer cer 公钥证书
.p12 p12 个人证书格式PKCS12
.keystore jks jks证书存储库,注意linux下最好使用keystore后缀名
.srl srl CA序列号文件
证书key文件,未签名的证书文件
2 证书生成配置
2.1 创建根证书,并用openssl自签名
此工程产生的证书可复用。应当每次使用一个相同的根证书,不要重新生成。
1. 生成ca根证书key
openssl genrsa -out ca/root-key.pem 1024
2.创建根证书请求文件
openssl req -new -out ca/root-req.csr -key ca/root-key.pem
#openssl req -new -out ca/root-req.csr -key ca/root-key.pem -keyform PEM
3.自签根证书
openssl x509 -req -in ca/root-req.csr -out ca/root-cert.cer -signkey ca/root-key.pem -

CAcreateserial -days 3650
4.导出p12格式根证书
openssl pkcs12 -export -clcerts -in ca/root-cert.cer -inkey ca/root-key.pem -out ca/root.p12
5.生成root.jks文件
keytool -import -v -trustcacerts -storepass 222222 -alias neuqrootca -file ca/root-cert.cer -

keystore jks/root.keystore
输出截屏信息为:
------------------------产生自签名根证书部分--------------------------------
D:\appserver\tomcat-7.0.37\conf\ssl>openssl genrsa -out ca/root-key.pem 1024
Loading 'screen' into random state - done
Generating RSA private key, 1024 bit long modulus
.......++++++
...........++++++
e is 65537 (0x10001)

D:\appserver\tomcat-7.0.37\conf\ssl>openssl req -new -out ca/root-req.csr -key c
a/root-key.pem
Loading 'screen' into random state - done
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]:heb
Locality Name (eg, city) []:qhd
Organization Name (eg, company) [Internet Widgits Pty Ltd]:com
Organizational Unit Name (eg, section) []:neuqsoft
Common Name (e.g. server FQDN or YOUR name) []:neuqrootca
Email Address []:neuqrootca@neuqsoft.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:123456
An optional company name []:

D:\appserver\tomcat-7.0.37\conf\ssl>openssl x509 -req -in ca/root-req.csr -out c
a/root-cert.cer -signkey ca/root-key.pem -CAcreateserial -days 3650
Loading 'screen' into random state - done
Signature ok
subject=/C=CN/ST=heb/L=qhd/O=com/OU=neuqsoft/CN=neuqrootca/emailAddress=neuqro

ot
ca@neuqsoft.com
Getting Private key

D:\appserver\tomcat-7.0.37\conf\ssl>openssl pkcs12 -export -clcerts -in ca/root-
cert.cer -inkey ca/root-key.pem -out ca/root.p12
Loading 'screen' into random state - done
Enter Export Password:
Verifying - Enter Export Password:

D:\appserver\tomcat-7.0.37\conf\ssl>keytool -import -v -trustcacerts -storepass
222222 -alias neuqrootca -file ca/root-cert.cer -keystore jks/root.jks
所有者:EMAILADDRESS=neuqrootca@neuqsoft.com, CN=neuqrootca, OU=neuqsoft, O=com,
L=qhd, ST=heb, C=CN
签发人:EMAILADDRESS=neuqrootca@neuqsoft.com, CN=neuqrootca, OU=neuqsoft, O=com,
L=qhd, ST=heb, C=CN
序列号:e6d18bc29dc3513e
有效期: Fri Apr 05 10:11:00 CST 2013 至Mon Apr 03 10:11:00 CST 2023
证书指纹:
         MD5:99:14:5B:63:F2:79:ED:B6:A6:FD:21:1E:20:ED:06:4F
         SHA1:9F:1D:AE:13:EE:98:4F:C0:19:70:38:A4:37:28:4B:31:D4:63:60:4C
         签名算法名称:SHA1withRSA
         版本: 1
信任这个认证? [否]:  是
认证已添加至keystore中
[正在存储 jks/root.jks]
2.2 产生根证书签名的服务器端证书部分
此过程应当针对具体的服务器进行证书签发。不同的服务器应当使用不同的证书。
1.生成服务端key
openssl genrsa -out server/server-key.pem 1024
2.生成服务端请求文件
openssl req -new -out server/server-req.csr -key server/server-key.pem
3.生成服务端证书(root证书,rootkey,客户端key,客户端请求文件这4个生成客户端证书)
openssl x509 -req -in server/server-req.csr -out server/server-cert.cer -signkey

server/server-key.pem -CA ca/root-cert.cer -CAkey ca/root-key.pem -CAcreateserial -days

3650
4.生成服务端p12格式根证书
openssl pkcs12 -export -clcerts -in server/server-cert.cer -inkey server/server-key.pem -out

server/server.p12
查看证书信息
使用以下命令可以检查生成的证书信息
keytool -list -keystore server/server.p12 -storetype pkcs12 -v -storepass 123456
导出服务端证书到JKS
keytool -import -v -trustcacerts -storepass 123456 -alias neuqserver -file server/server-

cert.cer -keystore jks/server.keystore
输出截屏信息为:
D:\appserver\tomcat-7.0.37\conf\ssl>openssl genrsa -out server/server-key.pem 10
24
Loading 'screen' into random state - done
Generating RSA private key, 1024 bit long modulus
.......................++++++
.............................++++++
e is 65537 (0x10001)

D:\appserver\tomcat-7.0.37\conf\ssl>openssl req -new -out server/server-req.csr
-key server/server-key.pem
Loading 'screen' into random state - done
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]:heb
Locality Name (eg, city) []:qhd
Organization Name (eg, company) [Internet Widgits Pty Ltd]:com
Organizational Unit Name (eg, section) []:neuqsoft
Common Name (e.g. server FQDN or YOUR name) []:server.neuqdomain
Email Address []:server@neuqsoft.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

D:\appserver\tomcat-7.0.37\conf\ssl>openssl x509 -req -in server/server-req.csr
-out server/server-cert.cer -signkey server/server-key.pem -CA ca/root-cert.cer
-CAkey ca/root-key.pem -CAcreateserial -days 3650
Loading 'screen' into random state - done
Signature ok
subject=/C=CN/ST=heb/L=qhd/O=com/OU=neuqsoft/CN=server.neuqdomain/emailAddress

=s
erver@neuqsoft.com
Getting Private key
Getting CA Private Key

D:\appserver\tomcat-7.0.37\conf\ssl>openssl pkcs12 -export -clcerts -in server/s
erver-cert.cer -inkey server/server-key.pem -out server/server.p12
Loading 'screen' into random state - done
Enter Export Password:
Verifying - Enter Export Password:

D:\appserver\tomcat-7.0.37\conf\ssl>keytool -import -v -trustcacerts -storepass
123456 -alias neuqserver -file server/server-cert.cer -keystore jks/server.jks
所有者:EMAILADDRESS=server@neuqsoft.com, CN=server.neuqdomain, OU=neuqsoft,

O=co
m, L=qhd, ST=heb, C=CN
签发人:EMAILADDRESS=neuqrootca@neuqsoft.com, CN=neuqrootca, OU=neuqsoft, O=com,
L=qhd, ST=heb, C=CN
序列号:bbd911d011910725
有效期: Fri Apr 05 10:21:31 CST 2013 至Mon Apr 03 10:21:31 CST 2023
证书指纹:
         MD5:A7:CD:0C:16:00:A2:A3:77:4C:45:15:30:B1:2F:84:B0
         SHA1:1A:C4:49:77:0C:1C:9F:E5:FC:3E:33:37:6F:A4:27:41:A7:08:15:E7
         签名算法名称:SHA1withRSA
         版本: 1
信任这个认证? [否]:  是
认证已添加至keystore中
[正在存储 jks/server.jks]
2.3 产生根证书签名的客户端证书部分
需要双喜认证时使用。此时需要为每个客户端分发客户端证书。根据实际业务,可以各客户端

使用同一个客户端证书,也可以各客户端使用不同的证书。
1.生成客户端key
openssl genrsa -out client/client-key.pem 1024
2.生成客户端请求文件
openssl req -new -out client/client-req.csr -key client/client-key.pem
3.生成客户端证书(root证书,rootkey,客户端key,客户端请求文件这4个生成客户端证书)
openssl x509 -req -in client/client-req.csr -out client/client-cert.cer -signkey client/client-

key.pem -CA ca/root-cert.cer -CAkey ca/root-key.pem -CAcreateserial -days 3650
4.生成客户端p12格式根证书
openssl pkcs12 -export -clcerts -in client/client-cert.cer -inkey client/client-key.pem -out

client/client.p12
查看证书信息
使用以下命令可以检查生成的证书信息
keytool -list -keystore client/client.p12 -storetype pkcs12 -v -storepass 123456
导出客户端证书到jks:
keytool -import -v -trustcacerts -storepass 123456 -alias neuqclient -file client/client-cert.cer

-keystore jks/client.keystore
输出截屏信息为:
D:\appserver\tomcat-7.0.37\conf\ssl>openssl genrsa -out client/client-key.pem 10
24
Loading 'screen' into random state - done
Generating RSA private key, 1024 bit long modulus
......++++++
.......++++++
e is 65537 (0x10001)

D:\appserver\tomcat-7.0.37\conf\ssl>openssl req -new -out client/client-req.csr
-key client/client-key.pem
Loading 'screen' into random state - done
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]:heb
Locality Name (eg, city) []:qhd
Organization Name (eg, company) [Internet Widgits Pty Ltd]:com
Organizational Unit Name (eg, section) []:neuqsoft
Common Name (e.g. server FQDN or YOUR name) []:client
Email Address []:client@neuqsoft.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

D:\appserver\tomcat-7.0.37\conf\ssl>openssl x509 -req -in client/client-req.csr
-out client/client-cert.cer -signkey client/client-key.pem -CA ca/root-cert.cer
-CAkey ca/root-key.pem -CAcreateserial -days 3650
Loading 'screen' into random state - done
Signature ok
subject=/C=CN/ST=heb/L=qhd/O=com/OU=neuqsoft/CN=client/emailAddress=client@neuqs
oft.com
Getting Private key
Getting CA Private Key

D:\appserver\tomcat-7.0.37\conf\ssl>openssl pkcs12 -export -clcerts -in client/c
lient-cert.cer -inkey client/client-key.pem -out client/client.p12
Loading 'screen' into random state - done
Enter Export Password:
Verifying - Enter Export Password:

D:\appserver\tomcat-7.0.37\conf\ssl>keytool -import -v -trustcacerts -storepass
123456 -alias neuqclient -file client/client-cert.cer -keystore jks/client.jks
所有者:EMAILADDRESS=client@neuqsoft.com, CN=client, OU=neuqsoft, O=com, L=qhd, S
T=heb, C=CN
签发人:EMAILADDRESS=neuqrootca@neuqsoft.com, CN=neuqrootca, OU=neuqsoft, O=com,
L=qhd, ST=heb, C=CN
序列号:bbd911d011910726
有效期: Fri Apr 05 10:24:10 CST 2013 至Mon Apr 03 10:24:10 CST 2023
证书指纹:
         MD5:B4:72:08:85:0E:9D:FA:3A:81:62:20:6E:D1:3E:75:C2
         SHA1:88:E4:19:35:EA:8A:A1:08:40:02:4D:23:35:1B:58:5B:56:2C:1C:3B
         签名算法名称:SHA1withRSA
         版本: 1
信任这个认证? [否]:  是
认证已添加至keystore中
[正在存储 jks/client.jks]
3 Tomcat中的配置
3.1 将ca根证书和客户端证书导入keystore
命令:
keytool -import -v -trustcacerts -storepass 222222 -alias neuqrootca -file ca/root-cert.cer -

keystore jks/trust.keystore
keytool -import -v -trustcacerts -storepass 222222 -alias neuqclient -file client/client-cert.cer

-keystore jks/trust.keystore
说明:
这里产生的jks为一个新的jks,也可以直接使用默认的jks,默认的jks位置位于启动tomcat时使

用的JAVA_HOME下,位置为
%JAVA_HOME%/jre/lib/security/cacerts   默认密码为changeit
双向ssl认证时,需要在该信任库中保护根证书及允许访问的客户端证书(无需包含服务器端证

书)。

3.2 在客户端浏览器中导入根证书
注意应当导入到受信任的根证书颁发机构中。
3.3 在客户端浏览器中导入根证书签名的客户端证书
3.4 修改context.xml中配置
1.一般情况下,没有使用APR时,直接屏蔽掉APR连接器。APR连接默认要求SSL连接
2.对于http连接器(包括NIO连接),修改其中SSL配置,并取消SSL的注释。此时为:JSSE方

式)
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
   clientAuth="true" sslProtocol="TLS"
   keystoreFile="conf/ssl/server/server.p12 " keystorePass="123456"

keystoreType="PKCS12"
   truststoreFile="conf/ssl/jks/trust.keystore " truststorePass="222222"

truststoreType="JKS"
   SSLCertificateFile="D:/appservertomcat-7.0.37/conf/ssl/server/server-cert.cer"
   SSLCertificateKeyFile="D:/appservertomcat-7.0.37/conf/ssl/server/server-key.pem" /> 
说明:在Linux中,可能会使用truststoreFile配置自定义的信任库不能正常使用的情况。会提示

找不带对应得keystore文件(如这里而定trust.jks)。此时默认位置在 ~/下。
4 Tomcat中SSL测试
4.1 单向SSL测试
此时,tomcat中ssl配置中的clientAuth="false"。这里以使用的服务器端证书为

server.neuqdomain为例。
在浏览器中输入:  https://server.neuqdomain:8443/ 进行访问
根据浏览器设置可能会直接接受服务器端证书访问,也可能会给出证书提示后正确访问到。此

时浏览器不应该有报错(前提是证书正确,配置无误,且证书用户名和服务器机器名相同)
注意:如果证书中配置用户名为server.neuqdomain,而在服务器上使用https://localhost:8443/

进行访问时,浏览器会提示“证书错误是否继续”。出现此问题是应用,服务器端认证必须为相

应的服务器名进行访问才能正确认证,并非配置错误。
4.2 双向SSL测试
此时,tomcat中ssl配置中的clientAuth="true"。这里以使用的服务器端证书为

server.neuqdomain为例。
客户端通过浏览器访问:https://server.neuqdomain:8443/时,如果未在本机导入客户端证书

则不能访问,如果导入了客户端则可以正确访问。
4.3 客户端证书用户验证
双向SSL认证下,web应用可以通过客户端证书获取证书中的用户名,直接用来进行用户验证


这里以tomcat7及其自带的manager应用为例。
这里客户端证书信息为:
EMAILADDRESS=client@neuqsoft.com, CN=client, OU=neuqsoft, O=com, L=qhd, ST=heb,

C=CN
密码为null时。
在%tomcat_home%/conf/tomcat-users.xml中,添加:
<user username="EMAILADDRESS=client@neuqsoft.com, CN=client, OU=neuqsoft, O=com,

L=qhd, ST=heb, C=CN" password="null" roles="manager-gui,standard,manager-script"/>
及相应的角色(tomcat7中应为manager-gui;tomcat5、6中为manager,admin)后。再到

manager应用中修改web.xml。
将其中的:
  <login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>Tomcat Manager Application</realm-name>
  </login-config>
修改为:
  <login-config>
    <auth-method>CLIENT-CERT</auth-method>
    <realm-name>Tomcat Manager Application</realm-name>
  </login-config>
而后重启tomcat,则在访问: https://server.neuqdomain:8443/manager时可以直接访问到而

无需输入用户名及密码。此时tomcat实际是使用了客户端证书的用户名来进行相应的用户验证

及授权。
5 名词解释
5.1 SSL简介
Secure Socket Layer,为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据

加密(Encryption)技术,可确保数据在网络上之传输过程中不会被截取及窃听。
5.2 TLS
安全传输层协议(TLS)用于在两个通信应用程序之间提供保密性和数据完整性。该协议由两

层组成: TLS 记录协议(TLS Record)和 TLS 握手协议(TLS Handshake)。较低的层为

TLS 记录协议,位于某个可靠的传输协议(例如 TCP)上面。
5.3 CSR
CSR是Cerificate Signing Request的英文缩写,即证书请求文件,也就是证书申请者在申请数

字证书时由CSP(加密服务提供者)在生成私钥的同时也生成证书请求文件,证书申请者只要把

CSR文件提交给证书颁发机构后,证书颁发机构使用其根证书私钥签名就生成了证书公钥文件

,也就是颁发给用户的证书。
通常CSR文件是在拿到参考码、授权码进行证书签发和下载时,通过网页提交给CA的(也可以

由浏览器自动生成)。
5.4 CER
用于存储公钥证书的文件格式。
数字证书采用公钥体制,即利用一对互相匹配的密钥进行加密、解密。每个用户自己设定一把

特定的仅为本人所知的私有密钥(私钥),用它进行解密和签名;同时设定一把公共密钥(公

钥)并由本人公开,为一组用户所共享,用于加密和验证签名。当发送一份保密文件时,发送

方使用接收方的公钥对数据加密,而接收方则使用自己的私钥解密,这样信息就可以安全无误

地到达目的地了。通过数字的手段保证加密过程是一个不可逆过程,即只有用私有密钥才能解

密.在公开密钥密码体制中,常用的一种是RSA体制。
5.5 PFX
公钥加密技术12号标准(Public Key Cryptography Standards #12,PKCS#12)为存储和传输

用户或服务器私钥、公钥和证书指定了一个可移植的格式。它是一种二进制格式,这些文件也

称为PFX文件。
5.6 PEM
增强型私人邮件(Privacy Enhanced Mail,PEM)格式现在更多地用作密钥格式,并且可以包

含私钥(RSA和DSA)、公钥(RSA和DSA)和x509证书。它存储ASCII头部包装 的Base64编码

DER格式的数据,所以它适用于系统之间的文本模式传输
5.7 DER
分布式编码规则(Distinguished Encoding Rules,DER)格式也可以包含私钥、公钥和证书。

它是大多数浏览器的默认格式,并且按照ASN1 DER格式进行存储。它没有头部——PEM是文本

头部包装的DER
5.8 JKS
Java密钥库(Java Key Store), JKS文件仅用于存储服务器证书、私钥、公钥和身份证书。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值