I've an Apache 2.2 server by having an SSL certificate hosting several services that needs to be only access using SSL.

ie: https://myserver.com/topsecret/ ought to be permitted while http://myserver.com/topsecret/ ought to be either refused or, ideally, rerouted to https. http://myserver.com/public shouldn't have this restriction, and really should work using either http or https.
The choice to allow/deny http is created at the very top level directory, and affects all content beneath it.

It is possible to directive that may be put into the Apache config to retrict access in this way?

The SSLRequireSSL directive is exactly what you are searching for.

<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteCond %{SERVER_PORT} !443$
   RewriteRule ^/topsecret/(.*)$ https://myserver/topsecret/$1 [R,L]
</IfModule>

Presuming you're using VirtualHost directives,

Place a Directory directive within the non-ssl virtualhost denying access.

Then, place a Directory directive within the ssl virtualhost granting access.

I have always carried this out mod_rewrite within an .htaccess file, if you should have the ability to get it done in your primary config file too.

Here is a guide having a couple of methods for causeing this to be happen: Smart HTTP and HTTPS RewriteRule Redirects

Alternatively, you could utilize the server-side language to complete the processing for you personally, instead of using Apache's configuration options (if, possibly, you do not have the server's configuration).

For instance, with PHP:

if (!isset($_SERVER['HTTPS'])) {
  // put your redirect here
  header('Location: http://myserver.com/public');
}

(though you need to be aware - if you are using ISAPI on Microsoft IIS, when the request is not being routed through HTTPS, then the need for the $_SERVER['HTTPS'] variable is going to be "off")

possibly even:if($_SERVER['SERVER_PORT'] != 443){ header('Location:http://publicdomain.com'); }